zoukankan      html  css  js  c++  java
  • springboot + shiro学习(shiro登录过程)

    上一次配置好了shiro,现在来看下源码他是怎么过滤的

    这是shiro内置的Filter,在上次的匹配/**中使用了authc,当我们所有请求都会先进性过滤

    看FormAuthenticationFilter的源码,找到他的继承PathMatchingFilter,可以找到

    找到他在FormAuthenticationFilter的实现

    也就是当所有的请求过来我们都会进行判断是否登录如果没有登录

    保存当前请求,并且跳转到登录,登录链接是在FormAuthenticationFilter继承类AccessControlFilter中,默认,我们在ShiroFilterFactoryBean中setLoginUrl了

    然后会在AccessControlFilter中setLoginUrl

    如果他是登录请求通过url来进行匹配,然后判断是否登录已经在session中,如果没有进行登录就执行登录

    这里就用到官网说的subject.login(token);他的token是在FormAuthenticationFilter中进行request.getParamter("")来获取用户名密码,

    得到token进行登录,登录成功跳转到成功页面,

    他是怎么来执行login的?找了下源码

    主要是securityManager.login(this, token);

    一步一步找下去

    这里先从缓存里面找,找不到就用到我们自定义的realm的身份认证了,获取了认证信息如果info不为空执行assertCredentialsMatch进行校验

    getCredentialsMatcher就是我们在配置MyRealm的bean的时候设置的验证规则,

    最后比较的都是一个SimpleHash,看下第一个tokenHashedCredentials,

    首先他会获取我们在realm身份验证中的getCredentialsSalt

      返回一个SimpleHash

    hashAlgorithmName是我们当时配置的加密规则,credentials是需要加密的字段这里从token中获取的(也就是request.getParamter("password"))

     hashIterations加密次数,也是在最初配置myRealm的时候定义的

    第二个accountCredentials是获取加密后的密码,

    简单来说就是tokenHashedCredentials和accountCredentials进行对比

    tokenHashedCredentials是获取request中的password值和token中的salt来进行加密

    accountCredentials是我们保存在数据库中的密码,两个结果进行对比,

     所以添加用户在入库前的password我们要进行加密操作要和tokenHashedCredentials规则是一样的才可以,

      public static Object encodePwd(){
        String hashAlgorithmName = "MD5";
        String credentials = "123456";
        int hashIterations = 2;
       // ByteSource credentialsSalt = ByteSource.Util.bytes("admin8d78869f470951332959580424d4bf4f");
        return  new SimpleHash(hashAlgorithmName, credentials, null, hashIterations);
      }

     验证成功跳转到成功页面,失败抛出异常,由我们进行捕获然后进行操作

    
    
    
  • 相关阅读:
    计算机组成原理_存储器
    常用CMD命令
    swiper及其父级隐藏之后轮播失效问题
    canvas生成海报
    移动端h5 实现多个音频播放
    vuex的一些学习
    关于H5的一些杂思细想(一)
    vue Error: No PostCSS Config found in
    vue路由传参的三种方式区别(params,query)
    vue-cli+mock.js+axios模拟前后台数据交互
  • 原文地址:https://www.cnblogs.com/lu-wei/p/8651597.html
Copyright © 2011-2022 走看看