干掉Session?这个跨域认证解决方案真的优雅!

Posted jirigala

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干掉Session?这个跨域认证解决方案真的优雅!相关的知识,希望对你有一定的参考价值。

用户登录认证是 Web 应用中非常常见的一个业务,一般的流程是这样的:

  • 客户端向服务器端发送用户名和密码
  • 服务器端验证通过后,在当前会话(session)中保存相关数据,比如说登录时间、登录 IP 等。
  • 服务器端向客户端返回一个 session_id,客户端将其保存在 Cookie 中。
  • 客户端再向服务器端发起请求时,将 session_id 传回给服务器端。
  • 服务器端拿到 session_id 后,对用户的身份进行鉴定。

单机情况下,这种模式是没有任何问题的,但对于前后端分离的 Web 应用来说,就非常痛苦了。于是就有了另外一种解决方案,服务器端不再保存 session 数据,而是将其保存在客户端,客户端每次发起请求时再把这个数据发送给服务器端进行验证。JWT(JSON Web Token)就是这种方案的典型代表。

客户端再次与服务器端通信的时候,把这个 JSON 对象捎带上,作为前后端互相信任的一个凭证。服务器端接收到请求后,通过 JSON 对象对用户身份进行鉴定,这样就不再需要保存任何 session 数据了。

假如我现在使用用户名 wanger 和密码 123456 进行访问编程喵(Codingmore)的 login 接口,那么实际的 JWT 是一串看起来像是加过密的字符串。

以上是关于干掉Session?这个跨域认证解决方案真的优雅!的主要内容,如果未能解决你的问题,请参考以下文章

Django解决跨域俩方案

Json web token

基于JWT的身份认证学习笔记

JWT简介

[转]session 跨域共享方案

JSON Web Token