zoukankan      html  css  js  c++  java
  • Shiro的实现流程

    获取当前的 Subject. 调用 SecurityUtils.getSubject();
    测试当前的用户是否已经被认证. 即是否已经登录. 调用 Subject 的 isAuthenticated()
    若没有被认证, 则把用户名和密码封装为 UsernamePasswordToken 对象
    1). 创建一个表单页面
    2). 把请求提交到 SpringMVC 的 Handler
    3). 获取用户名和密码.
    执行登录: 调用 Subject 的 login(AuthenticationToken) 方法.
    自定义 Realm 的方法, 从数据库中获取对应的记录, 返回给 Shiro.
    1). 实际上需要继承 org.apache.shiro.realm.AuthenticatingRealm 类
    2). 实现 doGetAuthenticationInfo(AuthenticationToken) 方法.
    2). 实现 doGetAuthenticationInfo(AuthenticationToken) 方法.
    由 shiro 完成对密码的比对.
    1).密码的比对:
    通过 AuthenticatingRealm 的 credentialsMatcher 属性来进行的密码的比对!
    2). 如何把一个字符串加密为 MD5
    替换当前 Realm 的 credentialsMatcher 属性. 直接使用 HashedCredentialsMatcher 对象, 并设置加密算法即可.
    为什么使用 MD5 盐值加密:
    如何做到:
    1). 在 doGetAuthenticationInfo 方法返回值创建 SimpleAuthenticationInfo 对象的时候, 需要使用
    SimpleAuthenticationInfo(principal, credentials, credentialsSalt, realmName) 构造器
    2). 使用 ByteSource.Util.bytes() 来计算盐值.
    3). 盐值需要唯一: 一般使用随机字符串或 user id
    4). 使用 new SimpleHash(hashAlgorithmName, credentials, salt, hashIterations); 来计算盐值加密后的密码的值.

  • 相关阅读:
    ps photoshop cc 2015 Extract Assets(生成器)切图大法
    获取免费代理推荐
    nodejs http代理请求
    nodejs 发起http请求
    AHK GUI开发示例
    为【桌面右键菜单
    NPM 模块收集
    nodejs Commander 命令行神器简单示例
    如何用nodejs 开发一个命令行交互工具
    利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符
  • 原文地址:https://www.cnblogs.com/yangfanfan/p/11586152.html
Copyright © 2011-2022 走看看