解决无效token问题

在黑马课程中遇到无效token问题,导致无法获取用户列表数据。问题出现在main.js文件,通过删除import './axios/index'解决了问题。寻求对这一现象的解释。

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

解决无效token问题

这里先说明一下,在黑马这个课程里,我在获取左侧菜单栏的数据的时候就出现了无效token,但是我那个时候认为不重要,就在script标签的data里写死了数据,也是利用循环做出效果的,大伙可以看一下。但是在后面做用户列表获取数据的时候还是不能获取数据,输出无效token

文件截图(注意红色框这里)
在这里插入图片描述
首先附上源码

login.vue文件(这个一般没什么问题)

<template>
  <div class="login_container">
    <div class="login_box">
      <!-- 头像区域 -->
      <div class="avatar_box">
        <img src="../assets/logo.png" alt="">
      </div>
      <!-- 登录表单区域 -->
      <el-form ref="loginFormRef" :model="loginForm" :rules="loginFormRules" label-width="0px" class="login_form">
        <!--        用户名-->
        <el-form-item prop="username">
          <el-input v-model="loginForm.username" prefix-icon="el-icon-user"></el-input>
        </el-form-item>
        <!--        密码-->
        <el-form-item prop="password">
          <el-input v-model="loginForm.password" prefix-icon="el-icon-key" type="password"></el-input>
        </el-form-item>
        <!--        按钮区域-->
        <el-form-item class="btns">
          <el-button type="primary" @click="Login">登录</el-button>
          <el-button type="info" @click="resetLoginForm">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>

<script>

  export default {
   
    data() {
   
      return {
   
        // 数据绑定对象
        loginForm: {
   
          username: 'admin',
          password: '123456'
        },
        // 验证规则对象
        loginFormRules: {
   
          //验证用户
          username: [
            {
   required: true, message: '请输入用户名', trigger: 'blur'},
            {
   min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur'}
          ],
          password: [
            {
   required: true, message: '请输入登录密码', trigger: 'blur'},
            {
   min: 3, max: 15, message: '长度在 3 到 15 个字符', trigger: 'blur'}
          ]
        }
      }
    },
    methods: {
   
      Login() {
   
        // 预验证
        this.$refs.loginFormRef.validate(async valid => {
   
          //未验证通过则直接return
          if (!valid) return;
          //不加await的化不会打印出数据,await只能用于async修饰的函数
          const {
    data:res } = await this.$http.post("login", this.loginForm);
          // {
   </
### 解决前端页面中无效 Token 的方法 当遇到前端页面中的无效 `token` 问题时,可以通过以下几种方式进行处理: #### 方法一:重新获取有效的 Token 在发现 `token` 无效的情况下,可以尝试通过接口向后端申请新的有效 `token`。以下是基于 jQuery 实现的一个简单示例[^1]。 ```javascript var jwt = ""; // 初始为空,在登录成功后赋值为后端返回的有效 token function refreshJwt() { $.ajax({ cache: false, type: "POST", url: "https://xxx.xxx.x.xxx/refresh_token", // 假设这是刷新 token 的 API 地址 datatype: "json", success: function (response) { if (response.token) { jwt = response.token; // 更新全局变量 jwt console.log("Token refreshed successfully"); } }, error: function () { alert("Failed to refresh token."); } }); } // 调用此函数前先检查当前 token 是否有效 function checkAndUseToken() { if (!jwt || jwt === "") { refreshJwt(); // 如果未初始化,则主动刷新一次 } $.ajax({ cache: false, type: "GET", headers: { "Authorization": jwt }, url: "https://xxx.xxx.x.xxx/login", datatype: "text", success: function (data) { alert("Success: " + data); }, error: function (xhr, status, error) { if (xhr.status === 401) { // 当收到 401 错误时表示 token 已失效 refreshJwt(); } else { alert("Error occurred: " + error); } } }); } ``` 上述代码逻辑是在检测到 `token` 失效(即 HTTP 状态码为 401)时自动触发 `refreshJwt()` 函数来更新 `token` 并重试请求。 --- #### 方法二:利用 API 网关的过期机制 API 网关通常会对 `token` 中的 `exp` 字段进行验证,一旦该字段超出了设定的时间范围(默认不超过 7 天),则会判定其无效并拒绝访问[^2]。因此可以在开发阶段注意以下几点: - **确保客户端及时刷新 `token`**:为了避免因 `exp` 过期而导致的服务中断,建议定期轮询服务器以延长或替换现有的 `token`。 - **调整后端策略**:如果业务场景允许较短生命周期的 `token`,可考虑引入短期 `access_token` 和长期 `refresh_token` 组合的方式实现无缝切换。 --- #### 方法三:借助 Spring Boot 自定义注解完成校验 对于采用 Java 技术栈的应用程序而言,可通过自定义注解配合拦截器的形式简化对非法 `token` 的捕获流程[^3]。例如下面展示了一个简单的控制器配置案例: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @CheckToken // 使用自定义注解读取 header 中携带的 token 并执行合法性判断 @GetMapping("/user") public String getUserInfo() { return "User information retrieved."; } } ``` 在此基础上还需编写对应的切面类用于实际解析操作以及异常反馈过程。具体细节可以根据项目需求进一步扩展完善。 --- ### 总结 综上所述,针对前端页面中存在的无效 `token` 认证问题可以从多个角度出发加以应对。无论是从前端层面优化交互体验还是依托于后台架构设计增强安全性都具有重要意义。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值