Session会话即OAuth2.0(社交登录)

动态每日更新算法题,想要一起学习的小伙伴可以关注一下

一、Session

1.什么是Session

简而言之,Session可以认为是服务器中的一块内存数据。
在这里插入图片描述

每一个用户登录服务器之后,服务器都会为用户创建一个Session,然后返回一个cookie,下一次用户登录时就可以拿着这个cookie来服务器来校验,这就是免登陆的原理。

2.什么是Cookie

cookie 的出现是因为 HTTP 是无状态的一种协议,换句话说,服务器记不住你,可能你每刷新一次网页,就要重新输入一次账号密码进行登录。这显然是让人无法接受的,cookie 的作用就好比服务器给你贴个标签,然后你每次向服务器再发请求时,服务器就能够 cookie 认出你。

抽象地概括一下:一个 cookie 可以认为是一个「变量」,形如 name=value,存储在浏览器;一个 session 可以理解为一种数据结构,多数情况是「映射」(键值对),存储在服务器上。

在这里插入图片描述

3.Session的作用域

有了Cookie之后,每一次访问发放Cookie的网站都会自动携带,但是当域名改变时,Cookie会自动失效。
举个例子:
www.baidu.com 你在百度首页登录了账号
www.baidu.com/video 当你访问百度视频时,Cookie就会失效

1. 跨域(跨服务器)访问问题解决
1.Session一致性

在这里插入图片描述

Session复制,在Tomcat服务器之间直接复制Session,但是有一个缺点会占用网络带宽且会占用大量内存,在分布式环境下缺点尤其明显,所以不推荐。

2.Session储存在客户端

在这里插入图片描述

客户端存储Session,最大的弊端还是安全性问题

3.Session hash一致性(推荐)

在这里插入图片描述

hash一致性可以保证每一次的访问都在同一个服务器。

4.Session统一存储(推荐)

在这里插入图片描述

全部存在Redis中,每一次访问只要去数据库查询即可,一般使用Redis存储.

4.单点登录

在这里插入图片描述

最后,利用好Session共享的特性,我们就可以实现单点登录,只要登录了淘宝,那么淘宝旗下其他的网页都可以进行免登陆。

二、OAuth2.0

1.社交登录

  要想了解什么事OAuth,我们可以先来了解一下什么是社交登录,来看一下csdn的登录页面
在这里插入图片描述
在右下角的各种登录方式比如QQ、github、百度和脉脉等都属于社交登录的方式之一。

2.什么是OAuth

OAuth 不是一个API或者服务,而是一个验证授权(Authorization)的开放标准,所有人都有基于这个标准实现自己的OAuth。(也就是社交登录所遵守的一种规则)

更具体来说,OAuth是一个标准,app可以用来实现secure delegated access. OAuth基于HTTPS,以及APIs,Service应用使用access token来进行身份验证。

3.OAuth的流程

在这里插入图片描述

1. 授权(第1、2、3步合并)

以QQ登录为例,概括起来的话1、2和3步都只属于我们登录qq,然后给csdn进行授权。
在这里插入图片描述

2.csdn拿到访问令牌(第四步)

1、csdn收到QQ的code码

登录成功之后,csdn会收到由QQ返回来的一个code码
比如https://www.csdn.net/success?code=xxxxxxxxxxxxx

在这里插入图片描述

2、向QQ索要访问令牌

这里使用Postman来模拟发送code码

在这里插入图片描述

这里再使用拿到的code码对QQ进行访问,可以看到在response里面有一个access_token,这个就是访问令牌,可以去QQ服务器拿到相应的信息,当然这里的信息只是相对开放的,不会开放密码等个人隐私信息,一般我们可以拿到头像名字等信息。
在这里插入图片描述

3.使用Access_token访问QQ(第五、六步)

在这里插入图片描述

这里csdn就可以使用先前拿到的Access_token来获取想要的信息,比如头像名称等。于是社交登录完成,csdn会来辨别你是否是第一次登录,如果是就在数据库中注册并登录,否则直接登录。


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OAuth 2.0是一种用于授权的开放标准,它允许用户通过第三方应用程序授权给其他网站或应用程序对他们的信息进行访问。在JavaScript中,我们可以使用OAuth 2.0进行用户授权登录,并获取用户信息。 首先,在前端页面中,我们需要使用OAuth 2.0的授权代码流程或隐式流程来进行用户授权登录。用户点击登录按钮后,将跳转到第三方认证服务器登录页面,并输入其用户名和密码。认证服务器将验证用户的身份并授权访问令牌。 接下来,前端页面接收到授权访问令牌后,可以使用该令牌来请求用户信息。我们可以使用JavaScript的Fetch API或Axios库来发送HTTP请求,向第三方API端点发出GET请求,并在请求头中携带授权令牌。 当第三方API端点验证了授权令牌,并且用户已经授权登录后,将返回用户的信息,比如用户名、邮箱等。前端页面可以将这些信息展示给用户,比如在页面顶部显示用户的用户名和头像等。 需要注意的是,在使用OAuth 2.0进行授权登录时,用户的隐私和安全性非常重要。在前端页面和后端服务器端都需要进行安全性检查,确保用户信息被安全地传输和展示。 总之,使用OAuth 2.0进行授权登录并显示用户信息,需要通过前端页面跳转到认证服务器进行用户登录授权,并在前端通过HTTP请求获取用户信息,并将用户信息展示给用户。同时,安全性和隐私保护也是至关重要的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值