权限管理框架Shiro的基本使用一

  • 目录

  • 组成:四大组件,功能支持
  • Shiro验证流程
  • 配置与实例

  • 一:组成

https://i-blog.csdnimg.cn/blog_migrate/2e66b88b68f474f20cc5ae2a8a8b487a.png

Shiro的四大核心功能 也称为“Shiro应用程序的四大基石”:

  • 身份验证,授权,会话管理和加密算法。

1.Authentication:有时也简称为“登录”(身份验证)
这是一个证明用户是他们所说的他们是谁的行为。

2.Authorization:访问控制的过程,也就是绝对“谁”去访问“什么”,即授权。

3.Session Management:会话管理:
管理用户特定的会话,即使在非 Web 或 EJB 应用程序,在后面会详解。

4.Cryptography:通过使用加密算法保持数据安全。

  • 额外的支持的功能有以下这些:

1.Web Support: Shiro 的 web 支持的 API 能够轻松地帮助保护 Web 应用程序。

2.Caching: 缓存是 Apache Shiro 中的第一层公民,来确保安全操作快速而又高效。

3.Concurrency: Apache Shiro 利用它的并发特性来支持多线程应用程序。

4.Testing: 测试支持的存在来帮助你编写单元测试和集成测试,并确保你的能够如预期的一样安全。

5.“Run As”: 一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。

6.“Remember Me”: 在会话中记住用户的身份,所以他们只需要在强制时候登录。



第一步都是拿到验证的主体。这个主体的定义参照:

Subject 是一个安全术语,它基本上的意思是
“当前正在执行的用户的特定的安全视图”。它并没有被称为"User"是因为"User"一词通常和人类相关联。在安全 界,术语"Subject"可以表示为人类,而且可以是第三方进程,cron job,daemon account,或其他类似的东西。它仅仅意味着“该事物目前正与软件交互”。对于大多数的意图和目的,你可以把 Subject 看成是 Shiro 的"User"概念

    /*获取验证的主体*/
        Subject subject = SecurityUtils.getSubject();
        /*获取Session*/
        Session session = subject.getSession();
        if(!subject.isAuthenticated()){ //验证通过
            UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("username","password");
            /*设置记住账号*/
            usernamePasswordToken.setRememberMe(true);
            /*登录方法*/
            subject.login(usernamePasswordToken);
        }
        /*退出登录*/
        subject.logout();

注意:Session在Shiro中是一个特定的实例,在web环境下等同于HttpSession;非Web环境下一样可以使用,使用范围也不在像HttpSession,局限于web层。

https://i-blog.csdnimg.cn/blog_migrate/f606a87d05bf89e966f0599c072f8fc6.png

subject.login(usernamePasswordToken); 可能抛出上述异常,对于这些异常要进行捕捉,同时进行处理。
常见的异常:
AuthenticationException包含以下子类:

  • CredentitalsException 凭证异常

IncorrentCredentialsException 不正确的凭证

ExpiredCredentialsException 凭证过期

  • AccountException 账号异常

ConcurrentAccessException 并发访问异常(多个用户同时登录时抛出)

UnknownAccountException 未知的账号

ExcessiveAttemptsException 认证次数超过限制

DisabledAccountException 禁用的账号

LockedAccountException 账号被锁定

UnsupportedTokenException 使用了不支持的Token

Handy Hint
最安全的做法是给普通的登录失败消息给用户,因为你当然不想帮助试图闯入你系统的攻击者。

1.UnknownAccountException 未知的账号

提示信息:账号不存在,或者账号密码不一致

2.IncorrentCredentialsException 密码错误

3.LockedAccountException 账号被锁定


最近在做一个Spring boot 博客系统,权限控制采用Shiro框架,后面功能完善了,会发布我的github,希望给读者有些帮助。

高级运用参见下一版:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值