登录问题

登录问题的基本步骤

对于单一服务器式 登录

  1. 使用session对象实现
  2. 登录成功之后,将用户数据放入session中,判断是否登录
session.setArrtibute("user",user)
session.getAttribute("user)

分布式单点登录 (sso模式)

  1. session广播机制实现 2 .cookie+redis 3. token

session 广播机制实现,session的复制

cookie+redis

在项目中任何一个模块进行登录,登录之后,放到俩个地方

    1. redis:key生成唯一值 在value中放数据
    1. cookie把redis里面生成的key放到cookie

访问项目中其它模块,发送带cookie进行发送

  • 获取cookie值,然后做处理
  1. 把cookie获取值,到redis进行查询,根据key进行查询,如果查询到数据就进行登录
token

按照一定规则生成字符串,字符串可以包含用户信息(例如ip#用户名#****#加密)

  1. 在项目中某个模块进行登录,登录之后,按照规则生成字符串
    把登录之后用户含生成字符串中,加密 返回
    1. 字符串通过cookie返回
    1. 字符串通过地址栏返回
  1. 再访问其它模块,每次访问时候,地址栏带着字符串,在地址栏获取的字符串根据
    字符串获取信息
JWT

token是按一定规则,生成字符串,包含用户信息 (规定不是确定的,推荐使用jwt)
jwt生成好的规则,使用jwt规则生成字符串包含用户信息
jwt生成字符串包含三个部分

    1. jwt头信息
    1. 有效载体,包含主体信息(用户信息 (用户名密码))
    1. 签名hash(防伪标志) 可以设置秘钥 ,根据秘钥来设置加密
      登录业务,拿到用户名和密码 在数据判断有没 调用jwt来生成字符串返回。
      注册模块

拿到手机号 验证码 用户名 密码

  1. 判断是否为空
  2. 在redis中是否有验证码
  3. 判断手机号是否重复
  4. 存数据库

OAuth2 权限

  1. 开放系统间接授权,2.分布式访问问题
      总项目
A       B      C模块
1. 登录成功之后,按照一定规则生成字符串,字符串包含用户信息
2. 把生成字符串通过路径传送,或者cookie
3. 后面再发送时候,每次带着字符串 进行发送,获取字符串,从
字符串获取用户信息

OAuth2解决方案,令牌机制,按照一定规则生成字符串,字符串包含用户信息

posted @ 2021-10-22 17:05  杰的博客#  阅读(37)  评论(0编辑  收藏  举报