登录注册中的各种逻辑总结

登录模块:

SSO单点登录:

单点登录一般常用的有三种情况

第一种方式:session广播机制

第二种方式:采用cookie + redis 来实现

思路:采用redis来生成一个随机值的 key,value则存放用户信息数据,然后将redis生成的key放入到cookie中,在当前项目访问其他模块的时候,发送的请求里面带着cookie,在接受端的模块中获取请求中的cookie值,找到对应的key值,然后再去redis中查询,是否存在数据,如果存在则表明已经登录。

第三种方式:采用token方式实现

思路:在项目中的登录模块进行登录后,按照某种规则生成字符串,把登录之后的用户信息包含到生成的字符串中,然后将字符串返回。其中包含两种方式:一是可以把字符串通过cookie返回,二是可以将字符串通过地址栏返回两种方式。

       当我们再去访问其他的模块的时候,每次访问的时候地址栏带着生成的字符串,然后再访问的模块里面获取地址栏的字符串,根据字符串获取用户信息,如果能获取到则表明该用户已经登录了。

 

Token字符串是如何生成的?

采用JWT生成token字符串

JWT生成的字符串由三个部分组成:第一部分:JWT头信息 第二部分:有效载荷(包含用户信息) 第三部分:签名哈希

登录具体流程:

1.调用接口返回token字符串

2.将返回的字符串存放到cookie中

3.创建前端拦截器--判断cookie中是否有token字符串,如果有的话,将token字符串放入到header中(请求头中)

4.根据token字符串调用接口,返回用户信息,为了首页显示用户信息,然后将调用接口返回的用户信息存放到cookie中。

微信扫描登录:

OAuth2:它是一种特定问题的解决方案。主要解决:开放系统间授权和分布式访问

它的解决方案是采用了令牌机制,按照一定规则生成字符串,字符串中要包含用户信息。

可以说OAuth2就像一个接口一样,它只是指定要按照某钟规则生成字符串,而没有给出具体的生成字符串的策略,而JWT则是它的具体实现,能够生成具体的字符串,并且字符串中包含了用户信息。

 

如何通过微信扫码 获取用户人的微信信息?

       扫描登录的二维码之后微信接口返回code(临时票据),拿着code值去请求微信的固定地址,返回得到两个值一个是aaccess_token(访问凭证),另一个是openid(微信的唯一标识),拿着这两个值再去请求微信的固定地址,得到微信扫描人的信息(其中包括用户的名称、头像等等)。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值