Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。
我们先了解下Realm
创建一个File文件,名字随意,但是扩展名一定要是ini 然后我们用文本编辑器Text Editor打开。
在我们创建的ini文件中可以写4种权限用户,users、main、 roles、urls
[main] 提供了对根对象 securityManager 及其依赖的配置
[users] 提供了对用户/密码及其角色的配置
[roles] 提供了角色及权限之间关系的配置
[urls] 用于 web,提供了对 web url 拦截相关的配置
我们自定义Realm的话,需要继承AuthorizingRealm这个接口,而我们上面使用的默认Realm也是通过继承这个方法来实现的。 这里的两个方法中,形参是AuthenticationToken的是认证的方法,而另外一个则是授权的方法。这里我们使用认证的方法。
后面的myrealm是自定义的名称,也可以是别的。他主要是在多个Realm的情况下用以识别。
ini文件中需要配置main 然后我们就可以用上面的测试代码测试了。
这里以MD5加密为例
因为注解的方式实现是利用AOP的方式,所以需要导入AOP的包 然后需要在springmvc中开启Shiro注解 然后配置ref要和配置的id一致
如果被权限拦截后出现异常,则我们需要一个处理方式 这里表示如果出现权限异常,就跳转到refuse.jsp这个页面。
需要多个权限的话就使用value 和 logical logical有OR和AND两个属性。 OR—访问的角色只需要role1或者role3权限中的一个 AND—访问的角色需要role1和role3权限同时有
他的作用主要是将授权时所进行的不用的数据进行存贮和清除。
配置了以后运行,我们的授权就只会读取一次,解决了授权的问题。 但是如果用户在登录后将权限修改了,这时候缓存却不能及时的更新,所以我们需要清理一下以前的缓存。
然后设置注入再使用
remember me的主要作用就是记住本次登录。如果在近一段时间登录过这个网页,那么下次再访问这个网页则不需要输入账号密码,他就已经登录了。
然后关联配置 这样我们下次访问时就能够直接访问而不需要登录,因为你的账号密码已经记录在coke中了,下次他会直接从coke中读取。
