前端-Token认证

本文介绍了前端Token认证的概念和作用。Token是服务端在用户登录成功后返回的字符串,用于后续请求的验证。客户端通常将Token存储并放在请求头Authorization字段中。文章还提及了与Cookie跨域问题及JWT(JSON Web Token)在跨域认证中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Token

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

Token的作用

01Token用作登录

流程:

  1. 客户端使用用户名跟密码请求登录。
  2. 服务端收到请求,去验证用户名与密码。
  3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端。
  4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里。
  5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token。
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据。

如何请求时携TOKEN

axios请求拦截示例:

axios.interceptors.request.use(
### SA-Token Token 失效的原因及解决方案 #### 一、Token 过期时间设置不当 如果 `SA-Token` 的 `token` 设置了过期时间,而该时间较短,则可能导致用户短时间内未操作即被判定为失效。可以通过调整全局配置中的超时时间来解决问题。 ```java // 配置全局超时时间为一天(单位:秒) SaManager.getConfig().setTokenTimeout(60 * 60 * 24); ``` 上述代码片段展示了如何通过修改 `tokenTimeout` 参数延长 `token` 的有效期[^1]。 --- #### 二、前端未正确存储或传递 Token 当用户的登录状态正常,但每次请求都返回未授权错误时,可能是由于前端未能正确将 `token` 添加至请求头中。以下是正确的实现方式: ```javascript uni.setStorageSync('tokenValue', tokenValue); // 登录成功后保存 token 到本地 uni.request({ url: 'https://www.example.com/request', header: { "content-type": "application/x-www-form-urlencoded", "satoken": uni.getStorageSync('tokenValue') // 将 token 加入请求头部 }, success: (res) => { console.log(res.data); } }); ``` 此代码确保在每次发送请求时都将 `token` 正确附加到请求头中[^2]。 --- #### 三、跨域问题导致 Token 被忽略 在前后端分离项目中,若服务器未正确处理跨域请求,可能会导致浏览器无法携带 `token` 或者服务器拒绝接收带有 `token` 的请求。此时需确认是否已启用 CORS 支持并正确配置过滤器。 以下是一个典型的 Spring Boot 中的 CORS 配置示例: ```java @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") // 允许所有路径访问 .allowedOrigins("*") // 允许所有域名访问 .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的方法类型 .allowCredentials(true); // 是否允许携带 Cookie 和 Authorization Header } } ``` 此外,在使用 `SA-Token` 时还需要额外注册 `CorsFilter` 来支持跨域场景下的认证功能[^3]。 --- #### 四、Token 被恶意篡改或丢失 如果客户端传输过程中对 `token` 进行了非法修改或者网络异常造成数据包遗失,也会触发验证失败的情况。建议采用 HTTPS 协议加密通信链路以保障安全性;同时可以开启日志记录机制排查具体原因。 --- #### 五、缓存清理策略冲突 某些情况下,后台可能设置了强制清除特定用户的在线会话逻辑(例如定时任务定期回收闲置资源),这同样会造成当前有效期内的 `token` 变得不可用。针对这种情况需要检查业务代码是否存在类似的自定义规则干扰默认行为。 --- ### 总结 通过对以上几个方面的分析可知,`SA-Token` 的 `token` 失效通常源于以下几个方面: - **全局配置不合理** - **前端交互不规范** - **跨域支持缺失** - **网络安全隐患** - **特殊业务需求** 根据实际开发环境逐一排查即可定位根本原因并采取相应措施加以修复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值