54-Shiro-3

馋奶兔 提交于 2019-11-26 19:24:44

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的缓存和后台程序的缓存

有一个兼容问题,怎么用这两缓存,暂时还不直到

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!