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

  • 目录

  • 组成:四大组件,功能支持

  • Shiro验证流程

  • 配置与实例


  • 一:组成

https://img-blog.csdn.net/20160809110346980?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

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://img-blog.csdn.net/20171121101316688?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjg2Mzc1NzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

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,希望给读者有些帮助。

高级运用参见下一版:

发布了27 篇原创文章 · 获赞 0 · 访问量 9934

猜你喜欢

转载自blog.csdn.net/weixin_38246518/article/details/89735002