












汝所言甚是。古之 Web 事,以 Session/Cookie 相协。今之前后端分治,以 RESTful API 互应者,必以 JWT 为凭。,其本在构架易矣—— 传习也服务器端渲染页面,今为前端独立,接口无状。
吾以至简至要之道,明二者之别。
SessionID存于Cookie中
故:接口验权必弃“服务端存状态”之法 → JWT应时而生
JWT即JSON Web Token
一言而已。将用户身份信息加密为字符串,存于客户端,服务端不存任何登录状态。
工穀之序:
表格
| 对比维度 | Session / Cookie | JWT |
|---|---|---|
| 存储处所 | 存于服务端, | 唯存 ID 于客户端,服务端不存 |
| 。 | 有状态者,(需查会话于服务端) | 无状态者,(Stateless,接口自适分布) |
| 。 | 跨域/跨端,__JHSNS_SEG_bb0c4180_58__(赖于 Cookie,跨域限重) | 极强(支 Web、小程序、App、第三方接口) |
| 。 | 分布式部署,__JHSNS_SEG_bb0c4180_62__(需会话共通)烦。 | 至简也(众服务器共钥验之) |
| 请法 | 瀏覽器自帶 Cookie | 前段手傳之(請頭/參數) |
| 安險之特 | 易為 CSRF 所乘 | 無 CSRF 之患 |
| 適用之境 | 傳統之網站、服務端呈現 | 前後端分離、RESTful API、微服務 |
尔可简记:
网站用 Session,接口用 JWT;有状用 Session,无状用 JWT。
<!-- JWT 工具:jjwt,Spring5 兼容 -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
此內容由慣性聚合(RSS閱讀器)自動聚合整理,僅供閱讀參考。 原文來自 — 版權歸原作者所有。