学习日记第九天—Shiro

shiro

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。

我们先了解下Realm
在这里插入图片描述

一、 一个简单的shiro

1、添加依赖

在这里插入图片描述

2、创建文件

创建一个File文件,名字随意,但是扩展名一定要是ini
在这里插入图片描述
然后我们用文本编辑器Text Editor打开。

在我们创建的ini文件中可以写4种权限用户,users、main、 roles、urls

[main] 提供了对根对象 securityManager 及其依赖的配置

[users] 提供了对用户/密码及其角色的配置

[roles] 提供了角色及权限之间关系的配置

[urls] 用于 web,提供了对 web url 拦截相关的配置

3、测试

在这里插入图片描述

二、自定义Realm

1、继承AuthorizingRealm

我们自定义Realm的话,需要继承AuthorizingRealm这个接口,而我们上面使用的默认Realm也是通过继承这个方法来实现的。
在这里插入图片描述
这里的两个方法中,形参是AuthenticationToken的是认证的方法,而另外一个则是授权的方法。这里我们使用认证的方法。

2、实现认证方法

在这里插入图片描述
后面的myrealm是自定义的名称,也可以是别的。他主要是在多个Realm的情况下用以识别。

3、ini文件

ini文件中需要配置main
在这里插入图片描述
然后我们就可以用上面的测试代码测试了。

三、加密

这里以MD5加密为例
在这里插入图片描述

四、授权

1、先在ini文件中配置用户、角色、权限

在这里插入图片描述

2、登录成功后进行角色校验

在这里插入图片描述

3、授权

在这里插入图片描述

4、注解和标签实现权限

因为注解的方式实现是利用AOP的方式,所以需要导入AOP的包
在这里插入图片描述
然后需要在springmvc中开启Shiro注解
在这里插入图片描述
然后配置ref要和配置的id一致
在这里插入图片描述

如果被权限拦截后出现异常,则我们需要一个处理方式
在这里插入图片描述
这里表示如果出现权限异常,就跳转到refuse.jsp这个页面。

需要多个权限的话就使用value 和 logical
在这里插入图片描述
logical有OR和AND两个属性。
OR—访问的角色只需要role1或者role3权限中的一个
AND—访问的角色需要role1和role3权限同时有

五、缓存

他的作用主要是将授权时所进行的不用的数据进行存贮和清除。

1、配置缓存

在这里插入图片描述
配置了以后运行,我们的授权就只会读取一次,解决了授权的问题。
但是如果用户在登录后将权限修改了,这时候缓存却不能及时的更新,所以我们需要清理一下以前的缓存。

2、清空缓存

在这里插入图片描述
然后设置注入再使用
在这里插入图片描述
在这里插入图片描述

六、Remember Me

remember me的主要作用就是记住本次登录。如果在近一段时间登录过这个网页,那么下次再访问这个网页则不需要输入账号密码,他就已经登录了。

1、在登录表单中加入记住密码选项

在这里插入图片描述

2、配置Remember Me
<!-- remenberMe配置 -->
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
	<constructor-arg value="rememberMe" />
	<property name="httpOnly" value="true" /> 
	<!-- 默认记住7天(单位:秒) -->
	<property name="maxAge" value="604800" />
</bean> 
<!-- rememberMe管理器 -->
<bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
	<property name="cipherKey"
	 value="#{T(org.apache.shiro.codec.Base64).decode('4AvVhmFLUs0KTA3Kprsdag==')}" />
	<property name="cookie" ref="rememberMeCookie" />
</bean>

然后关联配置
在这里插入图片描述
这样我们下次访问时就能够直接访问而不需要登录,因为你的账号密码已经记录在coke中了,下次他会直接从coke中读取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值