您的位置 首页 java

Shiro——强大且易用的Java安全框架(三)

Shiro


十、Spring Boot整合Shiro实现登录认证

整体项目结构。省略数据访问层相关代码,使用固定数据进行认证。

Shiro——强大且易用的Java安全框架(三)

1、添加依赖

Shiro——强大且易用的Java安全框架(三)

2、编写配置文件

新建application.yml

Shiro——强大且易用的Java安全框架(三)

3、新建实体类

新建com.bjsxt.pojo.User

Shiro——强大且易用的Java安全框架(三)

4、编写业务层代码

新建com.bjsxt.service.UserService及实现类

Shiro——强大且易用的Java安全框架(三)

Shiro——强大且易用的Java安全框架(三)

5、自定义Realm

新建com.bjsxt.realm.MyRealm编写认证逻辑

Shiro——强大且易用的Java安全框架(三)

6、编写配置

新建com.bjsxt. config .ShiroConfig,编写配置

Shiro——强大且易用的Java安全框架(三)

7、编写控制器

新建com.bjsxt.controller.UserController

Shiro——强大且易用的Java安全框架(三)

8、编写启动类

新建com.bjsxt.ShiroApplication

Shiro——强大且易用的Java安全框架(三)

9、编写页面

9.1 编写登录页面

新建templates/login. html

Shiro——强大且易用的Java安全框架(三)

9.2 编写主页面

新建templates/login.html。页面中虽然编写内容

Shiro——强大且易用的Java安全框架(三)


十一、凭证匹配器

1、修改ShiroConfig

Shiro——强大且易用的Java安全框架(三)

2、修改UserServiceImpl

模拟从数据库查询出来的密码是加密的密码。

此加密数据是”admin” 加盐 ”123”迭代两次加密的结果。

Shiro——强大且易用的Java安全框架(三)

3、修改MyRealm

修改MyRealm中doGetAuthenticationInfo方法。把盐添加进去。

Shiro——强大且易用的Java安全框架(三)


十二、remember me实现

1、修改ShiroConfig

秘钥长度为16位,使用的是AES加密。

Shiro——强大且易用的Java安全框架(三)

Shiro——强大且易用的Java安全框架(三)

2、修改控制器方法

修改控制doLogin方法,在UsernamePasswordToken中添加第三个参数。表示是否启用remember me功能。

此功能应该在页面中添加一个 复选框 ,代码中直接假设用户勾选了复选框

Shiro——强大且易用的Java安全框架(三)


十三、退出实现

1、修改配置类

修改ShiroConfig类,添加logout filter 对应的url。

红色部分为新增内容。

Shiro——强大且易用的Java安全框架(三)

2、修改主页面

在index.html页面中添加超链接。跳转到/logout后会由shiro内置filter进行拦截。

Shiro——强大且易用的Java安全框架(三)


十四、授权

授权就是判断认证用户是否具有指定角色或指定权限。

Shiro可以和JSP整合也可以和Thymeleaf整合,我们讲解SpringBoot的视图技术Thymeleaf整合Shiro。

只要是授权就执行Realm的doGetAuthorizationInfo进行判断,而触发doGetAuthorizationInfo的方式,常用的就两种:

(1)在 页面 中通过shiro:xxxx 属性进行判断

(2)在java代码中通过注解@RequiresXXX/config文件中配置

1、thymeleaf中常用属性

需要在html页面中<html>添加属性

Shiro——强大且易用的Java安全框架(三)

1.1 shiro:user=””

认证通过或已记住的用户。

1.2 shiro:authenticated=””

认证通过的用户。不包含记住的用户。

1.3 shiro:principal

输出认证用户信息。 < shiro:principal />

1.4 shiro:hasRole=”admin”

判断是否具有指定角色。

1.5 shiro:lacksRole=”admin”

判断是否具有指定角色。

1.6 shiro:hasAllRoles=”role1,role2″

判断指定角色用户是否都具有。

1.7 shiro:hasAnyRoles=”role1,role2″

只要用户具有其中一个角色就表示判断通过。

1.8 shiro:hasPermission=”userInfo:add”

是否具有指定权限。

1.9 shiro:lacksPermission=”userInfo:del”

是否不具有指定权限

1.10 shiro:hasAllPermissions=”userInfo:view, userInfo:add”

是否全具有指定权限。

1.11 shiro:hasAnyPermissions=”userInfo:view, userInfo:del”

只要有其中任何一个权限即可。


海量Java学习资料,大厂面试题,项目练习题,统统免费提供,只要关注,那就会有收获~笔芯~

文章来源:智云一二三科技

文章标题:Shiro——强大且易用的Java安全框架(三)

文章地址:https://www.zhihuclub.com/196669.shtml

关于作者: 智云科技

热门文章

网站地图