前(后)端鉴权方式

Posted by Mars . Modified at

前端鉴权:掘金

一、cookie + session

cookie+session

  • 浏览器登录发送账号密码,服务端查用户库,校验用户;
  • 服务端把用户登录状态存为 session,生成一个 session_ID;
  • 通过登录接口返回,把 sessionID set 到 cookie 上;
  • 此后浏览器再请求业务接口,session_ID 随 cookie 带上;
  • 服务端查 session_ID 校验 session;
  • 成功后正常做业务处理,返回结果。

优点:

  • 因为主要信息在服务器存储,客户端只需要存储一个用来标识唯一性的ID,减少了请求携带cookie的体积;

缺点:

  • 服务端需要对每个session进行储存,压力大;
  • 服务端如果是集群,需要把session用额外独立的库集中储存。

二、token

token

  • 用户登录,服务端校验账号密码,获得用户信息;
  • 用户信息、配置等编码成 token,通过 cookie set 到浏览器;
  • 此后用户请求业务接口,通过 cookie 携带 token;
  • 接口校验 token 有效性,进行正常业务接口处理。

token与session的区别?

  1. token携带了用户的完整信息,通过服务端密钥编码储存在客户端,服务端不进行储存;而session则主要由服务端保存会话数据;

  2. 狭义上,session指代“服务端保存会话信息,客户端用cookie储存会话id”的鉴权形式,而token更为灵活,指代“客户端可以存在任何位置,服务器不保存信息”的鉴权形式;

优点:

  • 服务端不保存用户会话信息,避免查库带来的延迟;
  • 服务端压力小,不需要设置session统一管理架构,降低成本。

缺点:

  • token一般较长,请求携带cookie体积较大;

三、jwt

token的一种实现标准。

四、单点登录

1. 什么是单点登录?

假设一个公司拥有多个业务,部署在多个域名下,只要用户在一个业务下完成登录,访问其他业务页面可自动登录,叫做单点登录

2. 如何实现?

同一域名下的不同子域名,可以使用cookie的domain关键字来实现。

不同域名下,单点登录需要使用独立的认证服务SSO来实现。

单点登录

Keywords: Safety
previousPost nextPost
已经有 1000000 个小伙伴看完了这篇推文。