博客
关于我
Shiro 的身份认证
阅读量:698 次
发布时间:2019-03-21

本文共 1281 字,大约阅读时间需要 4 分钟。

身份验证与Shiro框овор

身份验证是指用户提供身份信息(如用户名)和凭证(如密码)给Shiro框架进行认证,确认其与应用预期一致。以下是相关知识与操作步骤。

基本概念

  • Principals(身份)

    通常是登录时提交的用户名,表示用户的身份信息。例如,登录时输入的用户名属于Principals。

  • Credentials(凭证)

    通常是Subject自己知道的密码。例如,登录时输入的密码属于Credentials。

  • UsernamePasswordToken

    用于支持基于用户名和密码的身份验证。如果需要记住用户的身份,可以通过将token设为记住的方式实现。不过需要注意的是,Shiro的记住功能不会记住凭证,也就不会自动登录。

身份验证步骤

  • 收集Subject提交的Principals和Credentials,生成token。

    UsernamePasswordToken token = new UsernamePasswordToken(username, password);token.setRememberMe(true);
  • 提交Principals和Credentials进行身份验证。

    Subject currentUser = SecurityUtils.getSubject();currentUser.login(token);
  • 处理认证结果。

    try {    currentUser.login(token);} catch (AuthenticationException e) {    // 用户名或密码错误    e.printStackTrace();} catch (IncorrectCredentialsException e) {    // 密码错误} catch (LockedAccountException e) {    // 账户锁定}
  • 注销操作

    调用currentUser.logout()后,Subject会变成匿名状态,之前的会话将失效。对于基于Cookies的Web应用,这会清除记忆的用户状态。

    Remembered(记住我)

    • 记住的Subject不是匿名的,是有一个已知的Principal的。

    • Remembered的判断

      subject.isRemembered() → true
    • 注意事项

      Shiro的记住功能仅记住Principals,不会记忆凭证,也不会自动登录。

    Authenticated(已认证)

    • 已认证Subject是指在当前会话中,通过Principals和Credentials成功认证的Subject。

      subject.isAuthenticated() → true
    • 重要性

      isRemembered()isAuthenticated()是互斥的。如果已被记住,则不会已经认证。

    这篇文章主要介绍了Shiro框架中的基于用户名密码的身份验证流程,简单明了地解释了每一步的含义与操作方法。如果需要更深入的学习,可以进一步探讨不同的认证策略或集成第三方身份验证器。

    转载地址:http://oskrz.baihongyu.com/

    你可能感兴趣的文章
    Java面试宝典(2020版)
    查看>>
    Springboot 初學習
    查看>>
    2020年云南省专升本 - 「计算机」专业各院校招生计划
    查看>>
    Android 四大组件、五大存储、六大布局总结
    查看>>
    【VRP问题】基于模拟退火改进遗传算法求解带时间窗含充电站的车辆路径规划问题EVRPTW
    查看>>
    打工族有房有车,原来是这么实现的
    查看>>
    算法 顺序查找/折半查找/冒泡排序/选择排序(待改)
    查看>>
    Rancher入门到精通-2.0 systemctl 启动服务Connection timed out
    查看>>
    Rancher从入门到精通-2.0 配置gitlab代码库 404页面 原因有点扯
    查看>>
    ProgresSql 连接 ssl off 错误
    查看>>
    浏览器打开winscp 系统错误。代码:5。 拒绝访问。
    查看>>
    Oracle Listener动态注册与静态注册(转载)
    查看>>
    Kubernetes 无法查询到并且无法删除pod实例的排查过程
    查看>>
    android中button修改不了背景颜色
    查看>>
    uniapp自定义弹窗组件|仿微信android/ios弹窗效果
    查看>>
    Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
    查看>>
    (网络安全)主动信息收集 操作系统识别
    查看>>
    Class和ClassLoader的getResource方法对比
    查看>>
    redis教程-redis环境搭建安装(qq:1197852132)
    查看>>
    github 入门
    查看>>