您的位置:首页 >Webapp 令牌安全指南:访问与刷新实践
发布于2026-02-17 阅读(0)
扫一扫,手机访问

本文详解 Web 应用中 access token 与 refresh token 的颁发、存储、使用及自动续期机制,涵盖前后端协作流程、前端存储策略(localStorage/sessionStorage)、HTTP 请求头携带方式、过期检测逻辑及推荐的拦截器实现方案。
在现代 Web 应用(尤其是基于 JavaScript 框架如 Angular、React 或 Vue 构建的单页应用)中,采用 Token 认证(如 OAuth 2.0 或 JWT)已成为主流方案。其中,access token(访问令牌)用于短期 API 调用鉴权,而refresh token(刷新令牌)则用于在 access token 过期后安全地获取新令牌,避免用户频繁重新登录。
服务端发放双令牌
用户凭账号密码完成登录后,服务端应生成一对令牌:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "d3a7f9c1-8b2e-4e8a-b4f0-2c1a3e4d5f6b",
"expires_in": 900
}前端安全存储策略
// TypeScript(Angular/React/Vue 通用逻辑)
localStorage.setItem('access_token', response.access_token);
localStorage.setItem('refresh_token', response.refresh_token);
localStorage.setItem('expires_at', Date.now() + response.expires_in * 1000);请求时自动注入 access token
所有需鉴权的 API 请求必须在 Authorization 请求头中携带 access token:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
实践中,应使用HTTP 拦截器(Interceptor)统一处理,避免每个请求手动添加。以 Angular 为例:
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = localStorage.getItem('access_token');
if (token) {
const authReq = req.clone({
headers: req.headers.set('Authorization', `Bearer ${token}`)
});
return next.handle(authReq);
}
return next.handle(req);
}
}自动续期:用户离开又返回时如何“无感登录”?
当用户关闭浏览器后再次访问网站,前端应:
? 安全提示:refresh_token 建议由服务端存储在 Redis 等可撤销存储中,并与用户设备指纹/UA/IP 绑定,支持主动吊销(如用户登出、异地登录)。
遵循以上模式,即可构建既安全又流畅的用户会话体验。
上一篇:橙瓜码字怎么设置背景?
下一篇:猎豹浏览器卸载需断网吗?
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9