`
ahua186186
  • 浏览: 554180 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

shiro落地的设计复杂度(最后总结)

阅读更多
经过1周的源码研究,终于对shiro的原理有了深刻的理解,基于原理我们识别出生产环境落地这个技术的设计复杂度


shiro落地的设计复杂度:
(1)自定义CachingSessionDAO,这是核心,因为它存储了session,Principals,AuthenticationState等所有可以持久化的数据。
(2)sessionid无状态化设计:我们就可以通过继承DefaultWebSessionManager,自定义getSessionId逻辑实现无状态的会话,而不需要依赖cookie来获取session.,此方案登陆成功后必须把sessionID传给客户端。
(3)登陆成功后最好初始化session:
Session session = subject.getSession();//初始化会话
//下一步最好按照一定的规则存用户的session和相关数据到数据仓库中(比如redis),以备以后使用
(4)其他:shiro扩展:自定义AuthorizingRealm,SessionFactory,SimpleSession,过滤器,SessionListenerAdapter等等,这些都是基本操作,不重要,初级水平的开发都能理解。
(5)典型应用:单点登陆(登陆认证、登出,验证token)--特殊的认证,
     单点登陆增加的设计复杂度:
       -->增加登陆界面
       -->登陆成功,跨域重定向(cors方案即可)

(6)备选方案1:spring security

(7)备选方案2:自己实现3类接口即可,不需要什么鬼框架,增加学习成本。。
-->用户登陆认证接口 
-->用户权限查询和校验接口 (结合自定义注解+自定义过滤器实现权限过滤)
-->session的保存,更新,删除接口
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics