• 基于redis实现用户登陆


    因为session有数据共享问题,不同tomcat服务器中的session不能共享,之后负载均衡就无法实现。所以我们用redis代替session。redis可以被多个tomcat服务器共享,redis基于内存。

    之前的session可以看做登陆凭证,本次登陆凭证由session变为token。

    手机号验证码登陆

    1.用户发送请求携带手机号参数获取验证码,后端随机生成验证码,并把手机号和验证码存入redis。调用第三方平台把验证码发到用户手机。
    2.用户输入验证码,发送请求(携带参数手机号,参数验证码)进行登陆,后端从redis查询是否有对应的手机号,验证码。有就登陆成功,根据手机号查询用户信息,随机生成登陆凭证token,把token和用户信息存入redis。返回结果给前端时,会把token存入Result中返回给前端。之后前端每次发送请求时,请求头中都会携带token。
    3.之后用户每次发送请求都携带登陆凭证token,用户发送的请求会被拦截器拦截(之前的login服务不会被拦截),拦截后根据token查询redis中是否有对应的用户信息,有就把用户基本信息存入ThreadLocal中以供本次请求使用,然后放行请求。

    下图中可以看出,用户的发送的请求,请求头中携带token,这需要在前端自己设置,Authorization这个属性名是前端自定义的
    在这里插入图片描述

    账号密码登陆

    1.用户输入账号密码,发送请求(携带参数账号,参数密码)进行登陆,后端从数据库中查询是否有对应的账号,密码。有就登陆成功,根据账号查询用户信息,随机生成登陆凭证token,把token和用户信息存入redis。返回结果给前端时,会把token存入Result中返回给前端。之后前端每次发送请求时,请求头中都会携带token。
    2.之后用户每次发送请求都携带登陆凭证token,用户发送的请求会被拦截器拦截(之前的login服务不会被拦截),拦截后根据token查询redis中是否有对应的用户信息,有就把用户基本信息存入ThreadLocal中以供本次请求使用,然后放行请求。

  • 相关阅读:
    网段与广播域
    英码科技推出鸿蒙边缘计算盒子:提升国产化水平,增强AI应用效能,保障数据安全
    leetcode二叉树相关模板
    计算机网络八股总结
    理解 期望和方差(均值/估计值)
    不得不会的MySQL数据库知识点(七)
    LeetCode每日一题(1300. Sum of Mutated Array Closest to Target)
    面试题:Java序列化与反序列化
    Word控件Spire.Doc 【页面设置】教程(11) ;如何在 C# 中设置 Word 文档的页面大小
    Hbuilder本地调试微信H5项目(二)--添加UView框架插件
  • 原文地址:https://blog.csdn.net/qq_29270805/article/details/136503011