shiro的一些梳理
Spring Security 相较于 Apache Shiro 更复杂,学习成本高,仅限于Spring框架中使用,但相较于Apache Shiro在权限控制方面更灵活。Apache Shiro比较容易,不局限于Spring框架,可以在多种环境下使用。
remberberme 让浏览器记住用户的cookie,session记录在redis中----支持集群
所有用户及对应的资源信息在初始化的时候就加载到每台机器的内存,验证通过的情况下,授权时用户自身的信息每次请求一次每次从新加载(url,角色 分开),用户请求url,在服务器中找此用户访问此url对应的role[].此资源要求的角色role[]和当前用户的角色(subject中有(role,perm,principal(用户信息)))是否匹配
其权限过滤器及配置释义:
过滤名称中有s的表示里面的参数需要全部验证通过,这种可以重写,只要具备其中一个即可,如重写role过滤器具备其中一个角色即可通过验证
anon:
例子/admins/**=anon 没有参数,表示可以匿名使用。
authc:
例如/admins/user/**=authc表示需要认证(登录)才能使用,没有参数
roles(角色):
例子/admins/user/**=roles[admin],参数可以写多个,参数之间用逗号分割,当有多个参数时,例如admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。
perms(权限):
例子/admins/user/**=perms[add],参数可以写多个,例如/admins/user/**=perms["add, modify"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。
rest:
例子/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。
port:
例子/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString
是你访问的url里的?后面的参数。
authcBasic:
例如/admins/user/**=authcBasic没有参数.表示httpBasic认证
ssl:
例子/admins/user/**=ssl没有参数,表示安全的url请求,协议为https
user:
例如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查
参看: https://blog.csdn.net/qq_39874546/article/details/79081950