最近在做一个C/S架构的后台的时候,需要做权限管理。一开始想的是用redis保存用户登录凭证和登录信息,然后用redis来实现类似于session的东西。然后自己写一套权限管理系统出来。但是觉得工作量比较大。后来通过网上查阅资料,最后决定要用shiro来做权限管理,这样C/S和B/S架构都可以用这套权限管理系统。
因为C/S架构在客户端不能存储jsessionId,所以需要借助shiro来重写一些属于自己的sessionid规则。
具体实现方法在知乎上有过一片文章
这样就相当于把容器的session管理交给shiro来管理了。cookie里面设置的JSESSIONID只是存储到客户端的sessionIdKey。通过sessionIdKey获取真正的sessionId。在创建session的时候就可以通过自己的规则,比如分C/S和B/S客户端,设置不同的session过期时间。同时可以摆脱普通的通过cookie里面的jsessionId获取session的单一方式,还可以通过C/S的http请求中accss_token获取session来实现权限管理。
这里只是重写session管理,让我们自主控制session的获取和生成规则,让session可以适应C/S和B/S架构,然后可以通过shiro来进行权限管理。
如果大家有更好的C/S权限管理方法,希望能够多多指教。
PS:这是我写的第一篇分享文章,语言措辞会有很多口头话和读起来很费解的地方,希望大家谅解。