这是一个非常流行且安全的 Web 应用认证模式,尤其适用于单页面应用 (SPA)。
核心技术
BFF (后端服务): 专门为前端应用服务。它处理业务逻辑、数据库交互,并负责认证。
登录流程:
前端将用户名和密码发送到 BFF 的登录接口 (/api/token)。
BFF 验证凭据。
验证成功后,BFF 生成一个 JWT (Access Token)。
关键点: BFF 不将 JWT 直接返回给前端的 JavaScript。相反,它将 JWT 放入一个 HttpOnly 的 Cookie 中,并发送给浏览器。
认证请求:
当浏览器向 BFF 发送后续请求(例如,获取用户信息 /api/users/me)时,它会自动携带这个 HttpOnly Cookie。
BFF 从 Cookie 中读取 JWT,验证其有效性。
如果 JWT 有效,BFF 返回受保护的数据。
登出流程:
前端请求 BFF 的登出接口 (/api/logout)。
BFF 发送一个响应,该响应会清除(删除)浏览器中的认证 Cookie。
为什么使用 HttpOnly Cookie?
安全性: HttpOnly 标志告诉浏览器,这个 Cookie 不能通过 JavaScript (document.cookie) 访问。
这可以极大地降低 XSS (跨站脚本攻击) 的风险。如果攻击者能够在你的页面上注入恶意脚本,他们也无法窃取存储在 HttpOnly Cookie 中的 JWT。
相比之下,将 JWT 存储在 localStorage 或 sessionStorage 中则很容易被 XSS 攻击窃取。
完整代码:点击打开链接
网友回复
- threejs如何做个三维搭积木的游戏?
- three如何实现标记多个起始路过地点位置后选择旅行工具(飞机汽车高铁等),最后三维模拟行驶动画导出mp4?
- ai实时驱动的3d数字人可视频聊天的开源技术有吗
- swoole+phpfpm如何实现不同域名指向不同目录的多租户模式?
- 如何用go替换nginx实现请求phpfpm解析运行php脚本?
- 有没有浏览器离线运行进行各种文档、图片、视频格式转换的开源工具?
- 如何使用go语言搭建一个web防火墙?
- linux如何检测特定网络协议比如http协议中报文是否包含特点关键词并阻止返回给客户?
- 如果在nginx外过滤包含某些关键词的网页并阻止打开?
- 程序员怎么做副业赚钱?



 
				 
			 
			 
				 
			