当前位置:   article > 正文

集成JWT 结合验证码实现登录_jwt 验证码

jwt 验证码

集成jwt (注入jwt实现  三种模式:简单模式,混入模式,无状态模式;这里以简单模式作为演示)

  1. @Configuration
  2. public class SaTokenConfigure {
  3. // Sa-Token 整合 jwt (Simple 简单模式)
  4. @Bean
  5. public StpLogic getStpLogicJwt() {
  6. return new StpLogicJwtForSimple();
  7. }

Sa-Token 登录方法实现流程

1 new HashMap

Map<String, Object> ajax = new HashMap<>();

key 为一个通用常量信息 TOKEN(String) Velue(token值 )

然后就是生成令牌环节

loginService.login()

loginService.login(loginBody.getUsername(),......

service层

上来获取请求对象

HttpServletRequest request = ServletUtils.getRequest();

第二步调用了获取验证码开关的方法 返回值是true 或者false

boolean captchaEnabled = configService.selectCaptchaOnOff();

通过selectCaptchaEnabled()方法中的(根据键名查询参数配置信息)

selectConfigByKey(String configKey)

从redis中成功获取到value值

假如redis缓存查不到,则开启验证码,保证安全性

在mysql查找时,设置了自定义的SysConfigMapper.xml文件, 并在 sys_config 表中根据 configKey来查找对应的value。

若返回结果不为null:则将对应的key和value 存入redis缓存中,即:key: sys_config:sys.account.captchaEnabled -> value: true(false);

若返回结果为null: 则返回结果为“” (空字符串),在利用Convert.toBool(captchaEnabled)返回boolean类型的值。

第三步:判断验证码开关是true 或者false

如果为false 校验验证码 抛异常

如果为true

执行 生成 Token

  1. //获取当前储存器对象 并设置
  2. SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser);
  3. //根据账号id,进行登录
  4. StpUtil.login(loginUser.getLoginId(), deviceType.getDevice());
  5. // 获取当前 Token 的 Token-Session 对象
  6. StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
  7. // 获取当前会话的token值 并返回
  8. return StpUtil.getTokenValue();

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/182330?site
推荐阅读
相关标签
  

闽ICP备14008679号