1.授权
Subject
Resource
Permission
Role
关于授权这一块,按照前后端分离的概念,我们在后台里面不再进行权限设置,而是进行权限查询或者搞权限缓存,但是道理是一样的,后天不搞,前端肯定要搞,前端要搞授权,肯定也是有res,permission,role的设置
2.关于一系列的权限注解
@RequireRoles等,这些全部都是前端来写。。这里就不看了
3.shiro会话管理
功能=>
会话管理,会话时间监听,会话存储/持久化,容器无关的集群,失效/过期支持,对web的透明支持,SSO单点登录的支持
下面详细来看:
①Subject.getSession(true/false)创建session
②session.getId()
③session.getHost()
④session.getTimeout(),session.setTimeout()
⑤session.getStartTimestamp(),sesson.getLastAccessTime();还有session.touch()会更新最后访问时间,session.stop()销毁session
⑥属性操作,sesson有getAttribute,setAttribute,removeAttribute
⑦SessionListener:session的监听器,可以监听session的onStart,onStop,onExpiration
关于shiro的session会话,肯定还是要后台来操作的,我们可以根据具体的业务来操作sesison,比如session是否缓存,是否进行持久化操作,后面的demo肯定是需要用到的
4.shiro-session&httpSession
shiro的session是可以在service层里面访到的,但是如果用了httpSession,就要传值,那就是一个侵入式的了
httpSession和shiro的session是同一个session,我们用shiro的session,就可以在service层里面直接用了
5.SessionDAO
把session写到数据库里面
需要哪些配置呢
①sessionIdGenerator-->用JavaUuidSessionIdGenerator来生产sessionId
②sessionDAO-->需要用 sessionIdGenerator和sessioncache(如果需要缓存的话)
③配置sessionManager,配置一些参数然后把sessionDAO注入进来
并且我们还可以用sessionCache,还是分业务,这一块,不自己手动写demo是不可能知道怎么做
6.rememberMe
shiro 有一个subject.isRemembered( )方法
这里的意思就是用户是用记住我登陆的,而isAuthenticated是通过login登陆的
这两者只能有其一,不可能两个都为真,也就是说,rememberMe是一个相对低权限的标识,而isAuthenticated则是高权限的,这两种权限,大多情况下是不按照role进行进一步划分的
token.setRememberMe(true/false)
在isAuthenticated = false的情况下
可以设置是否记住我,也就是可以进行一个不敏感,低等级的操作
sum:
shiro其实真正能使用到的,还是使用dao去获取user的权限信息,然后把权限信息返回给前端,前端再进行权限管理以及操作
我们要做的就只有拿到权限,返回权限,所以shiro的缓存,还是肯定要学的,而且有一个问题,shiro的缓存和后台程序的缓存
有一个兼容问题,怎么用这两缓存,暂时还不直到