ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springboot-shiro:整合thymeleaf

2022-03-09 13:03:34  阅读:170  来源: 互联网

标签:springboot 登录 用户 thymeleaf session user shiro


承接:springboot-shiro:请求授权

1 引入thymeleaf-shiro整合依赖

pom.xml

<!--thymeleaf-shiro整合包-->
<dependency>
    <groupId>com.github.theborakompanioni</groupId>
    <artifactId>thymeleaf-extras-shiro</artifactId>
    <version>2.1.0</version>
</dependency>

2 配置一个shiro的Dialect,在ShiroConfig中增加一个Bean

src/main/java/com/lv/config/ShiroConfig.java

//整合ShiroDialect:用来整合shiro thymeleaf
@Bean
public ShiroDialect getShiroDialect(){
    return new ShiroDialect();
}

3 修改首页

增加了三部分:

  • 在头文件中加入了shiro的约束
  • 添加了登录的链接,和通过 th:if 实现该链接是否显示的判断.
  • 添加了通过 shiro:hasPermission 对add和update链接显示与否的判断

src/main/resources/templates/index.html

<!DOCTYPE html>
<html lang="en" xmlns:shiro="http://www.thymeleaf.org/thymeleaf-extras-shiro">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>首页</h1>
<p th:text="${msg}"></p>
<!--从session中判断值-->
<div th:if="${session.loginUser == null}">
    <a th:href="@{/toLogin}">登录</a>
</div>
<hr>
<div shiro:hasPermission="user:add">
    <a th:href="@{/user/add}">add</a>
</div>
<div shiro:hasPermission="user:update">
    <a th:href="@{/user/update}">update</a>
</div>
</body>
</html>

4 在UserRealm 添加存入用户信息的代码

在用户认证成功后,将用户信息放入session中

src/main/java/com/lv/config/UserRealm.java

//认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
    System.out.println("执行了=>认证doGetAuthorizationInfo");
    UsernamePasswordToken userToken = (UsernamePasswordToken) token;
    //连接真实的数据库
    User user = userService.queryUserByName(userToken.getUsername());
    if (user == null){ //没有这个人
        return null; //UnknownAccountException
    }
    //用户登录成功将用户信息存入session
    Subject currentSubject = SecurityUtils.getSubject();
    Session session = currentSubject.getSession();
    session.setAttribute("loginUser",user);

    //密码认证,交给shiro做(可以加密: MD5,MD5盐值加密)
    return new SimpleAuthenticationInfo(user,user.getPwd(),"");
}

5 启动项目测试

访问首页,未登录状态下,显示了登录按钮,点击登录

跳转到了登陆页面,登录admin1用户

登录成功后,登录按钮消失,并且只显示add按钮,admin1用户只有访问add权限

再登录admin2用户,只显示了update按钮,admin2用户只有访问update权限

说明权限控制成功实现,thymeleaf语法生效了,shiro整合thymeleaf完成

标签:springboot,登录,用户,thymeleaf,session,user,shiro
来源: https://www.cnblogs.com/lv1024/p/15984614.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有