Shiro-ssm整合

1.在SSM框架完整jar包的基础上添加三个shiro的jar包

shiro-core
shiro-spring
shiro-web

因为要涉及到页面(用到了C标签),这里也导入jstl页面。

Shrio作为一个权限框架,一般都是最后才加

Shiro整合配置。

Shiro和Web整合–配置web.xml文件

Shiro在web里面整合靠的还是一个过滤器,只要有和权限相关的请求,它就要走这个过滤器,所以首先配置一个过滤器ShiroFilter(在web。xml中配置 )。

自行搜索:==DelegatingFileProxy==这个代理过滤器。添加它的源码,拷贝全限定类名。

注意:在做Shiro和web整合的时候,这个过滤器的名字不能乱起,底层只能叫这个ShiroFilter
在之后配置Shiro的时候,会用到这个参数名称。
在这里插入图片描述
过滤器的一些参数:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
/* 就是拦截所有的请求。

Shiro和Spring整合–配置spring-shiro.xml文件

既然在Spring里面配置的话,就按照Spring的命名规范:
在这里插入图片描述
这样的话,之后扫描扫Spring-*的配置i文件也可以扫到他。

Shiro第一步 配置安全管理器。在Spring里面就是一个Bean
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

配置了上面的某些属性之后,默认会调这些属性后面的过滤器。

在这里插入图片描述

在这里插入图片描述

建立controller 控制权限(在这里面设置跳转页面)

根据FormAuthenticationFilter里面的默认参数内容可以得到下面这个关键字:

在这里插入图片描述
shiroLoginFailure:shiro在进行认证的时候 可能会出现异常。若出现异常的话,会把异常信息(异常的类的名字)存在这个域里面
可以通过判断不同的异常类型来做异常判断
在这里插入图片描述
认证失败以后,打回到登陆页面。若登录成功,会自动跳转到配置的成功跳转页面,没有配置,会跳转到上一次的登陆页面。

静态资源配置:

在登录界面(或者随便一个界面)设置一个静态资源
在这里插入图片描述
在这里插入图片描述
在spring-shiro里面设置静态资源不需要认证
在这里插入图片描述

设置退出

在这里插入图片描述

测试:
若账号密码错误
在这里插入图片描述
红色字体,说明静态资源未被拦截。

正常登录,正常退出。
在这里插入图片描述


通过逆向工程生成单表的增删改查。

操作方法:
https://blog.youkuaiyun.com/qq_39056805/article/details/80585941

创建一个业务类实体

业务实体:根据业务需要创建的实体,和表的结构不一定完全一直。
在这里插入图片描述

修改认证方法

认证信息返回的身份信息是一个activeUser,查询用户信息,和用户的菜单
在这里插入图片描述

认证成功,保存到Session

在这里插入图片描述
原来的index.jsp的内容放入一个新的页面first.jsp
在这里插入图片描述
left.jsp
在这里插入图片描述

10.商品查询测试

在这里插入图片描述
现在只有认证,没有授权,登录成功以后,点击菜单,就可以执行改操作

11.授权

修改spring-shiro.xml
在这里插入图片描述
测试,当前用户没有item:query权限

realm中添加授权
在这里插入图片描述
测试,可以执行添加

添加数据库查询功能,从数据库中查数据

在这里插入图片描述
在这里插入图片描述

13.ShrioSerivce

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14.MyRealm改为动态代码,认证方法改为从数据库中查询用户信息。

在这里插入图片描述

15.配置凭证匹配器

在这里插入图片描述

授权连接数据库

在这里插入图片描述

使用授权注解和标签

在这里插入图片描述
在这里插入图片描述

修改spring-mvc.xml
在这里插入图片描述

使用shiro标签

首先引入shiro标签库
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述

3.Shiro缓存

认证成功以后,不需要多次认证。使用授权标签和授权注解,每次执行都会调用获取授权信息的方法。
使用缓存解决。ehcache
jar包配置文件
:在这里插入图片描述
其中这个xml文件来自ehcache-core.jar包里面,拖出来改名即可。
在这里插入图片描述
jar包导入,xml文件导入

这个xml文件就是缓存的默认配置。
在这里插入图片描述
在这里插入图片描述

在SecurityManager里面配置ehcache属性
在这里插入图片描述

正常退出,清空缓存。
非正常退出,清空缓存。
用户正常在线,管理员修改了权限,缓存中的权限还是有效。

MyReaml添加方法
在这里插入图片描述

随便找一个Controller,在里面写一个方法来调用这个clearCache. 模拟执行清空缓存。
在这里插入图片描述

4.Session管理

Web项目可以通过SessionAPI和web.xml配置Session的过期时间,整合shiro 以后,可以通过shiro
管理Session
在这里插入图片描述

5.验证码

进入BaseServlet,有以前写的验证码方法
在这里插入图片描述
在这里插入图片描述

吧这里面的代码复制出来,在我们的项目中重新建一个verifyCode
在这里插入图片描述

在这里插入图片描述
建立verifyCodeController
在这里插入图片描述
在xml文件里面设置不拦截
在这里插入图片描述

登陆界面添加。
在这里插入图片描述
这样就有了。
在这里插入图片描述
接下来如何在登录的时候验证?
通过过滤器。

建立过滤器,继承FormAuthenticationFilter
在这里插入图片描述

source–OverRide/Implement Methods 自己重写这个方法。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值