微服务登录办理方案

打印 上一主题 下一主题

主题 1388|帖子 1388|积分 4164

微服务登录办理方案

1. 微服务用户登录校验流程

微服务用户登录校验,大致流程如下图:

  • 客户端用户登录,账户密码通过数据库校验以后,通过jwt生成token,每次向网关哀求,都会在哀求头中携带token;
  • 网关会过滤哀求,有登录需求的接口,网关会取出哀求头中的token举行校验,通过后解析token拿到用户信息存哀求头,传递给响应的微服务;
  • 微服务通过哀求头拿到用户信息,存到ThreadLocal,供后续业务使用;
  • 微服务和微服务之间,也需要互相调用,其之间的调用,也是需要传递用户信息供业务使用;

2. 微服务登录办理方案

微服务登录办理方案:

2.1 客户端密码校验并生成token

客户端输入账号密码,查询数据库校验账户密码有用性:
  1.     @Override
  2.     public UserLoginVO login(LoginFormDTO loginDTO) {
  3.    
  4.         // 1.数据校验
  5.         String username = loginDTO.getUsername();
  6.         //TODO:硬编码
  7. //        username = "jack";
  8.         String password = loginDTO.getPassword();
  9. //        password = "123";
  10.         // 2.根据用户名或手机号查询
  11.         User user = lambdaQuery().eq(User::getUsername, username).one();
  12.         Assert.notNull(user, "用户名错误");
  13.         // 3.校验是否禁用
  14.         if (user.getStatus() == UserStatus.FROZEN) {
  15.    
  16.             throw new ForbiddenException("用户被冻结");
  17.         }
  18.         // 4.校验密码
  19.         if (!passwordEncoder.matches(password, user.getPassword())) {
  20.    
  21.             throw new BadRequestException("用户名或密码错误");
  22.         }
  23.         // 5.生成TOKEN
  24.         String token = jwtTool.createToken(user.getId(), jwtProperties.getTokenTTL());
  25.         // 6.封装VO返回
  26.         UserLoginVO vo = new UserLoginVO();
  27.         vo.setUserId(user.getId());
  28.         vo.setUsername(user.getUsername());
  29.         vo.setBalance(user.getBalance());
  30.         vo.setToken(token
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小小小幸运

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表