浅谈SpringBoot整合Shiro

​ Shiro是一个简单的安全框架,主要功能有认证,授权,加密,会话管理,Web集成,缓存等。对比起来Spring Security,可能没有Spring Security功能强大,但是在实际工作中并不需要那么复杂的东西,所以简单的Shrio对于我们来说就足够了。

​ 这一次我们只谈谈简单使用,包括认证和授权,不考虑其源码和深层次的东西。我也只是第一次使用测试,想做个记录,有很多不足之处还望谅解。


环境配置

首先我们要进行相对应的环境配置,除了相对应的SpringBoot启动器和Web启动器外,还添加了SpringBoot默认模板引擎Thymeleaf的相应配置,因为我用的是SpringBoot1.5.19的版本而不是2.0所以thymeleaf默认的是2.0版本,thymeleaf-layout默认是1.0,我们需要将thymeleaf版本改成3.0和其thymeleaf相对应的2.0版本,如图所示

img

​ 重点是Shiro,使用版本是1.4.0

img

Shiro配置

​ shiro配置主要包含三步:

​ 1.创建ShiroFilterFacoryBean

​ 2.创建DefaultWebSecurityManager

​ 3.创建自定义的Realm类,Shiro会从Realm类中进行认证逻辑和授权逻辑的处理

img

img

登陆认证

​ shiro登陆认证也是分为三步:

​ 1.通过SecurityUtils获取subject对象

​ 2.封装当前登陆用户的账号密码

​ 3.执行登陆方法通过抛出shiro封装好的异常来确定登陆状态

img

执行登陆认证

​ 通过认证出来的token对象取出登陆用户的信息,并判断该用户的状态,如果不存在则直接返回空,

shiro抛出用户名不存在的异常,然后直接返回一个AuthenticationInfo的实现类,我们这里直接返回一个SimpleAuthenticationInfo就行了,将从数据库取出来封装了所有相关属性的user和密码返回就行,shirp会帮我们进行密码校验。

img

执行授权逻辑

​ 创建一个SimpleAuthorziationInfo对象,将当前用户的角色以及对应的权限通过addRoles或者addStringPermissions方法加入Info。因为用户角色权限的关系需要根据实际情况来选择,图中给了点示例,可以参考,最后将info对象返回。

img

shiro标签

​ 以上已经完成了简单的权限控制,想在界面更好的优化(比如隐藏相应的资源)可以通过shiro的标签来进行操作,需要导入额外的依赖thymeleaf-extras-shiro,html头文件也需要做相应的声明,以下举例两个简单的shiro标签

img

img

写在末尾的话

​ 第一次写博客第一次用shiro,不论是技术还是博客都很粗糙,我依然很菜,希望大家学习顺利,成为大牛。

0%