Session跨域认证方案,是否堪称设计上的典范?
- 内容介绍
- 相关推荐
本文共计3178个文字,预计阅读时间需要13分钟。
用户登录认证是Web应用中非常常见的业务,一般流程如下:
+ 客户端向服务器端发送用户名和密码+ 服务器端验证用户名和密码是否正确+ 验证通过后,在服务器端会话(session)中保存相关数据+ 例如:登录
用户登录认证是 Web 应用中非常常见的一个业务,一般的流程是这样的:
- 客户端向服务器端发送用户名和密码
- 服务器端验证通过后,在当前会话(session)中保存相关数据,比如说登录时间、登录 IP 等。
- 服务器端向客户端返回一个 session_id,客户端将其保存在 Cookie 中。
- 客户端再向服务器端发起请求时,将 session_id 传回给服务器端。
- 服务器端拿到 session_id 后,对用户的身份进行鉴定。
单机情况下,这种模式是没有任何问题的,但对于前后端分离的 Web 应用来说,就非常痛苦了。于是就有了另外一种解决方案,服务器端不再保存 session 数据,而是将其保存在客户端,客户端每次发起请求时再把这个数据发送给服务器端进行验证。JWT(JSON Web Token)就是这种方案的典型代表。
一、关于 JWTJWT,是目前最流行的一个跨域认证解决方案:客户端发起用户登录请求,服务器端接收并认证成功后,生成一个 JSON 对象(如下所示),然后将其返回给客户端。
{
"sub": "wanger",
"created": 1645700436900,
"exp": 1646305236
}
客户端再次与服务器端通信的时候,把这个 JSON 对象捎带上,作为前后端互相信任的一个凭证。
本文共计3178个文字,预计阅读时间需要13分钟。
用户登录认证是Web应用中非常常见的业务,一般流程如下:
+ 客户端向服务器端发送用户名和密码+ 服务器端验证用户名和密码是否正确+ 验证通过后,在服务器端会话(session)中保存相关数据+ 例如:登录
用户登录认证是 Web 应用中非常常见的一个业务,一般的流程是这样的:
- 客户端向服务器端发送用户名和密码
- 服务器端验证通过后,在当前会话(session)中保存相关数据,比如说登录时间、登录 IP 等。
- 服务器端向客户端返回一个 session_id,客户端将其保存在 Cookie 中。
- 客户端再向服务器端发起请求时,将 session_id 传回给服务器端。
- 服务器端拿到 session_id 后,对用户的身份进行鉴定。
单机情况下,这种模式是没有任何问题的,但对于前后端分离的 Web 应用来说,就非常痛苦了。于是就有了另外一种解决方案,服务器端不再保存 session 数据,而是将其保存在客户端,客户端每次发起请求时再把这个数据发送给服务器端进行验证。JWT(JSON Web Token)就是这种方案的典型代表。
一、关于 JWTJWT,是目前最流行的一个跨域认证解决方案:客户端发起用户登录请求,服务器端接收并认证成功后,生成一个 JSON 对象(如下所示),然后将其返回给客户端。
{
"sub": "wanger",
"created": 1645700436900,
"exp": 1646305236
}
客户端再次与服务器端通信的时候,把这个 JSON 对象捎带上,作为前后端互相信任的一个凭证。

