(一)Shiro,久闻其名,而今初相识


多说一句,在学习shiro之前,我觉得应该先用 filter ,自己动手写过粗粒度的权限系统,而不要一上来就使用框架。


shiro简介

  1. shiro 系出名门 Apache ,是一个权限框架。
  2. 可以在 javaSEjavaEE 环境中使用。
  3. shiro可以完成认证,授权,加密,会话管理,缓存等功能;
  4. spring security 比较,不落下风,更胜一筹,胜在简洁易用,胜在不依赖任何框架,spring security 依赖于 spring ,但是 spring security 可以控制粒度更细。。。

功能介绍

  • Authentication 登陆/身份认证

    在登陆的时候,验证某个用户是否拥有相应的身份,也就是是否是系统的使用人员;

  • Authorization 授权/权限认证

    验证某个已经认证通过,成功登陆的用户,是否拥有某个权限,一般是判断该身份拥有的角色的权限;

  • Session Manger 会话管理

    用户登陆以后,在没有退出之前,用户的所有信息都保存在会话中,如果是在 WEB 环境中,则是 HttpSession,如果实在 JavaSE 环境中,则是由 shiro 提供的 session

  • Cryptography 加密

    对数据进行加密。比如讲密码加密存进数据库里面;

  • Web Support Web支持

    Web 支持,很容易的集成到 Web 环境中 ;

  • Caching 缓存

    用户登录以后,对其信息,比如角色/权限信息进行缓存,下次再用的时候,不用再去查数据库,可以提供效率 ;

  • Concurrency 多线程认证

    Shiro 支持多线程的并发认证,即一个线程中开启另外一个线程,可以将权限传播过去 ;

  • Testing

    提供测试支持;

  • Run As

    允许一个用户伪装成另外一个用户的身份进行访问,如果允许的话 ;

  • Remember Me

    记住我,成功登陆一次以后,下次不再需要登陆 ;


从外部看 Shiro 架构

在这里插入图片描述

  • Application Code

    即应用程序代码 ;

  • Subject

    与应用程序代码直接交互的对象就是 Subject,代表当前用户 ,在 shiro 看来,任何东西,只要你与应用程序代码进行交互了,就把你看做是一个 Subject ,不管你是具体的人,还是只是爬虫,统统都看作 Subject

    Subject 其实像一个对外暴露接口一样,只是门面,任何具体的操作,都交给了后面的 SecurityManager

  • SecurityManager

    安全管理器,所有安全相关的操作,都会与它进行交互,比如认证、授权等功能;

    它是 Subject 背后的 大BOSS ,管理所有的 Subject ,也是整个 Shiro 的中央枢纽,类比于 springMvc 的 前端控制器;。

    连接 SubjectRealm ,负责与 Shiro 的其他组件进行交互 ;

  • Realm

    SecurityManager 下面务实的小弟,整个 Shiro 需要获取权限、身份等安全数据的时候,都需要从 Realm 这里获取,它可以看着是一个 数据源 ;


从内部看 Shiro 架构

在这里插入图片描述

  • Subject

    任何与应用进行交互的存在

  • SecurityManager

    Shiro 的话事人,中央枢纽,负责进行认证、授权、会话、缓存等功能 ;

  • Authenticator

    负责对 Subject 进行认证,内部可以自定义认证策略(Authentication Strategy) ;

  • Authorizer

    授权器,对 Subject 进行权限的判定 ,判断是否拥有某个权限;

  • Realm

    安全数据的来源,可以拥有多个 Realm ,可以从内存中获取,也可以从数据库获取,由使用者进行提供,因此一般在应用需要实现自己的 Realm

  • SessionManager

    管理 Session 的生命周期;

  • CacheManager

    缓存控制器,管理缓存的安全数据,比如用户的角色、权限等信息

  • Cryptography

    密码模块,Shiro 提供了常见的加密组件;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值