赞
踩
集成jwt (注入jwt实现 三种模式:简单模式,混入模式,无状态模式;这里以简单模式作为演示)
- @Configuration
- public class SaTokenConfigure {
-
-
- // Sa-Token 整合 jwt (Simple 简单模式)
- @Bean
- public StpLogic getStpLogicJwt() {
- return new StpLogicJwtForSimple();
- }
Sa-Token 登录方法实现流程
1 new HashMap
Map<String, Object> ajax = new HashMap<>();
key 为一个通用常量信息 TOKEN(String) Velue(token值 )
然后就是生成令牌环节
loginService.login()
loginService.login(loginBody.getUsername(),......
上来获取请求对象
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
- //获取当前储存器对象 并设置
- SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser);
- //根据账号id,进行登录
- StpUtil.login(loginUser.getLoginId(), deviceType.getDevice());
- // 获取当前 Token 的 Token-Session 对象
- StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
- // 获取当前会话的token值 并返回
- return StpUtil.getTokenValue();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。