jwt 令牌过期后如何注销

2024-03-11

我正在开发一个网络应用程序,使用node.js and vue.js,我正在使用进行身份验证和维护会话jwt and passport.js using passport-jwtstrategy

我已经完成了从创建 jwt 到保护路由的所有事情,现在我的问题是生成jwt我正在路过expiresIn:3600所以我想从 Ui 自动注销我的用户,并在一小时后从 localStorage 中删除令牌

在解码我的jwt我正进入(状态

 {
  "name": "Dheeraj",
  "iat": 1571896207,
  "exp": 1571899807
}

那么我怎样才能实时获取注销时间

In my auth.js当用户单击注销时,vue 存储文件我的注销代码是

logout({ commit }) {
        return new Promise((resolve, reject) => {
            localStorage.removeItem('jwt-token')
            localStorage.removeItem('user-name')
            commit('setAuthUser', null)
            resolve(true)
        })

    },

在同一个文件中,我有一个方法getAuthUser每当页面加载或卸载时都会运行以检查以保护路由和来宾用户

getAuthUser({ commit, getters }) {
        const authUser = getters['authUser']
        const token = localStorage.getItem('jwt-token')
        const isTokenValid = checkTokenValidity(token)
        if (authUser && isTokenValid) {
            return Promise.resolve(authUser)
        }

        commit('setAuthUser', token)
        commit('setAuthState', true)
        debugger
        return token


    }

那么一旦我的令牌过期我该如何注销 这里的任何人请指导我如何在令牌过期后注销

Edit

在我的 router.js 文件中

router.beforeEach((to, from, next) => {
store.dispatch('auth/getAuthUser')
    .then((authUser) => {
        const isAuthenticated = store.getters['auth/isAuthenticated']

        if (to.meta.onlyAuthUser) {
            if (isAuthenticated) {
                next()
            } else {
                next({ name: 'login' })
            }
        } else if (to.meta.onlyGuestUser) {
            if (isAuthenticated) {
                next({ name: 'welcome' })
            } else {
                next()
            }
        } else {
            next()
        }
    })

})

从我的 auth 文件中,我正在调用 get authUser ,我上面已经提到过

为了检查令牌有效性我正在使用此代码

function checkTokenValidity(token) {
if (token) {
    const decodedToken = jwt.decode(token)
    return decodedToken && (decodedToken.exp * 1000) > new Date().getTime()

}
return false

}

但当我在登录页面上时它返回 false 并且那里没有令牌但一旦我登录它显示 null

我的全局 api 文件

    import axios from 'axios';

export default () => {
    let headers = {
        'cache-control': 'no-cache'
    };
    let accessToken = localStorage.getItem('jwt-token');

    if (accessToken && accessToken !== '') {
        headers.Authorization = accessToken;

    };
    return axios.create({
        baseURL: 'http://localhost:8086/',
        headers: headers
    });
}

请参阅axios文档:https://github.com/axios/axios https://github.com/axios/axios

import axios from 'axios';

export default () => {
    let headers = {
        'cache-control': 'no-cache'
    };
    let accessToken = localStorage.getItem('jwt-token');

    if (accessToken && accessToken !== '') {
        headers.Authorization = accessToken;

    };
    const instance = axios.create({
        baseURL: 'http://localhost:8086/',
        headers: headers
    });

    instance.interceptors.response.use((response) => {
        if(response.status === 401) {
             //add your code
             alert("You are not authorized");
        }
        return response;
    }, (error) => {
        if (error.response && error.response.data) {
             //add your code
             return Promise.reject(error.response.data);
        }
        return Promise.reject(error.message);
    });

    return instance;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jwt 令牌过期后如何注销 的相关文章

  • 在nodejs中解密.Net cookie

    我在 Net 中创建了一个加密的cookie 并尝试在nodejs 中解密它的内容 但是nodejs不断抛出异常 TypeError DecipherFinal失败 在 Net中 我使用带有密钥的AES加密方法 932D86BB1448EE
  • IE 中未定义“代理”

    我通过 React Node 构建了一个 Excel 插件Umi https umijs org 我们已经实施了我们的身份验证系统 身份验证在 Chrome 和 Safari 中有效 我刚刚意识到它在 IE11 中不能很好地工作 F12表明
  • 我可以使用passport-google回调来验证android/ios用户吗?

    我有一个使用 google passport oauth2 进行身份验证的 node js 服务器 我的服务器端代码看起来像这样文档 https www npmjs com package passport google oauth2 au
  • 控制台未打开时无法加载资源:net::ERR_EMPTY_RESPONSE

    我正进入 状态 Failed to load resource net ERR EMPTY RESPONSE 如果控制台未打开 我的 api 调用会出错 然而如果控制台打开 则 api 调用工作正常 前端使用 Angular2 后端使用 N
  • 有没有办法拥有租户特定的 JWT 令牌

    我目前正在开发一个 SPA 应用程序 角度 后端使用 Python Flask API 该应用程序将支持多个租户 我对安全概念有点挣扎 我目前正在使用 jwt extend 颁发的 JWT 令牌对所有租户都有效 我当然可以从令牌中获取用户
  • Node.Js - 获取 Windows 用户名

    我正在尝试获取运行我的node jS应用程序的计算机的Windows用户名 该应用程序始终在Windows计算机上运行 如何使用 Node Js 获取当前的 Windows 用户名 我想找到类似的东西WindowsIdentity GetC
  • 等待两个异步函数完成,然后在 Node.js 中继续

    我正在 Node js 中开发一个应用程序 其中调用异步函数两次 并将值分配给全局变量 问题是我想使用这两个调用的结果来做其他事情 但是这个其他事情不会等待结果被分配 这是我的代码 var a var b let x abcd foo x
  • 如何在pm2下运行nuxt?

    我有 2 个 nuxt 项目需要在服务器上运行 每当我在本地运行该应用程序时 它似乎都在使用 npm run dev 但在服务器上 这需要在子进程下运行 所以我使用 pm2 来实现 但是每当我开始使用 pm2 运行相同的 npm 脚本时 该
  • 让 Express 服务器接受 CORS 请求

    我的 Express 服务器运行在 http localhost 3000 我称之为网络服务器 我有另一个应用程序在 localhost 8100 上运行 我简称为 应用程序 当我的应用程序调用网络服务器时 我收到以下消息 XMLHTTPR
  • 如何在express中动态渲染/加载页面?

    我需要使用express gt 3 0 框架动态加载 渲染nodejs v1 8 15 中页面的一部分 一般来说 我想创建一个单页应用程序 我在页面顶部有一个带有链接的菜单 单击链接将更改下面的内容 就像 AJAX 页面加载一样 例如 gt
  • 解析函数是否异步传递给 Promise 执行器?

    我有以下代码 function myPromiseFunc return new Promise resolve gt resolve Promise resolve 123 据我们所知Promise resolve方法立即用普通值解析 P
  • 生成源映射时出错 - grunt 和 sass 配置

    我正在尝试将 sass 与 grunt 一起使用 我已经在我的路径中安装了 ruby sass 和 grunt 版本是 节点 0 10 20npm 11 3 1grunt cli 0 1 13咕噜声 0 4 5萨斯 3 4 4 我的包 js
  • Angular 5 - ag-grid 18.0.1 - 边缘崩溃

    我一直在到处搜索 但无法找到与此相关的任何信息 很可能是因为 ag grid update 18 x 是新的 无论如何 似乎在将 ag grid 从 17 1 1 更新到 18 0 1 后 任何带有 ag grid 的页面最终都会导致 ED
  • 在 React 应用程序中简单连接到 mongodb

    我使用 create react app 创建了简单的反应应用程序 这个应用程序包含表单 验证和引导程序 没有什么花哨的东西能像魅力一样发挥作用 我还注册了 mongo 以获得免费集群 以便我可以发送一些数据 所以我有这个网址 mongod
  • 如何在 Google App Engine 上部署 1 个实例

    我需要在 Google App Engine 上部署一个简单 Node js 应用程序的 1 个实例 无需任何形式的扩展 我试过做gcloud preview app deploy 但是即使在我尝试关闭它们之后 也会创建许多实例 我的目标是
  • 如何在 Vue 2 中使用 Vue 路由器

    我正在学习 Vue 并开始于网页包模板 https github com vuejs templates webpack tree master template src 我想做的第一件事是添加对 Vue Router 的支持 但我现在已经
  • TRACKER:错误TRK0005:无法找到:“CL.exe”。该系统找不到指定的文件

    我尝试在 Windows 8 上的 Node js 项目中执行以下命令 npm 安装 电子邮件受保护 cdn cgi l email protection 但我收到一个错误 我不知道如何处理 TRACKER 错误TRK0005 无法找到 C
  • EJS在JS onload函数中访问express变量

    我知道你可以像这样获取 ejs 文件中变量的值 h1 h1 如果我要在同一个 ejs 页面的 onload javascript 函数中使用相同的标题变量 我将如何使用它 例如 这个函数产生一个控制台错误说 未捕获的语法错误 意外的标识符
  • Javascript:更改输入值时设置光标位置

    当您输入公式时 我试图在我的应用程序中重现类似于 Microsoft Excel Google Sheets 的用户体验 并且您可以使用不同的公式和变量来自动完成下拉菜单 为此 在验证自动完成功能后 我希望能够控制光标的位置 例如 如果我输
  • 如何在Windows上正确使用node.js child_process.spawn()重定向?

    我有一个干净的 Windows 8 1 盒子 安装了最新的 node js v0 10 29 我在两个文件中有以下测试代码 a js var sub require child process spawn node b js silent

随机推荐

  • 使用 POST 创建 HTML 表格

    我正在尝试创建一个网页 该网页接受用户输入 将其发布到创建页面 然后创建另一个在 html 表中显示数据的网页 我正在使用 file put contents 创建网页 每当我尝试包含一个循环来获取要输出的 3 个 td 的内容时 我都会收
  • “e 是 65537 (0x10001)”是什么意思?

    我想知道输出是什么e is 65537 0x10001 方法 它发生在 RSA 密钥生成过程中 使用openssl genrsa 我知道这些点意味着该数字已经通过了探针除法 并且在通过米勒 拉宾测试后打印出了加号 但我无法弄清楚 RSA 密
  • 循环和数组格式

    我刚刚完成了我必须为课堂编写的程序 该程序应该从用户那里获取 ID 和 日期 的输入 我的老师要求我们在这两个部分中放置一个循环 以防用户没有输入正确的 ID 日期 我已经将程序编写到可以接受输入的位置 但它无法区分输入是否有效 并将继续执
  • 如何读取等待 dropzone 的文件列表并按顺序上传

    我正在使用 拖放 上传多个图像dropzone js 在这里我保留了autoProcessQueue to false进行自定义上传 现在我正在寻找如何获取我选择上传的队列列表 原因是我需要一个接一个地上传文件 以便保持顺序 我可以保留选择
  • git 添加 .给我总线错误(核心转储)

    我正在使用 ubuntu 并尝试将我的代码放在 github 上 但是当我尝试使用 git add 时 命令时 我收到错误 总线错误 核心转储 joannah joannah Inspiron N5040 Macerdo git init
  • 图 Api - 401 未经授权

    刚刚开始使用 graph office API 哇 这是一个雷区 只是想知道是否有人可以给我任何建议 当我尝试联系时收到 401https graph microsoft com beta me files https graph micr
  • 如何将资产文件夹中的文件路径传递给文件(字符串路径)? [复制]

    这个问题在这里已经有答案了 可能的重复 Android 如何确定资产中特定文件的绝对路径 https stackoverflow com questions 4744169 android how to determine the abso
  • 角度引导模态掩码形式

    我正在尝试在范围内获得角度形式来验证验证等 基本情况 假设我有以下 HTML
  • 如何控制C printf %e中'e'后面的指数位数?

    我想控制C中 e 后面的指数位数printf e 例如 Cprintf e result 2 35e 03 但我想要2 35e 003 我需要3位指数 我该如何使用printf Code include
  • ASP.NET:如何更快地加载页面

    我们用 ASP NET 编写了 Portal 但它有很多 JavaScript 我们的页面加载速度很慢 在某些页面中 页面大小为 1 5 mb 减少或压缩页面大小以使其更快的最佳方法是什么 谢谢 几件事 最小化您的 javascript 和
  • Azure Functions V2 中的 OpenAPI(又名 Swagger)

    我正在创建一个 V2 函数应用程序 并希望使用 Swagger Open API 来处理文档 但 Azure V2 函数门户尚不支持它 关于如何在 VSTS 中使用 Swagger 和 V2 函数在每个构建上创建文档 有什么建议吗 TL D
  • 展平嵌套数组。 (爪哇)

    我正在努力创建正确的逻辑来展平数组 我本质上想为嵌套数组中的每个子项复制父行 嵌套数组的数量可能会有所不同 我一直在创建 Java 列表 因为我发现它们很容易使用 但对任何解决方案都开放 这个问题的本质是我从一些嵌套的 JSON 开始 我想
  • 在不知道结构的情况下使用python读取二进制文件

    我有一个包含 8000 个粒子位置的二进制文件 我知道每个粒子值应该看起来像 24 6151 我不知道我的程序给出的值的精度 我猜它是双精度 但是当我尝试使用以下代码读取文件时 In with open results0epsilon en
  • Symfony2 简单文件上传编辑,无实体

    请帮助我 因为我不敢相信自己的眼睛 我拒绝使用某些第三方插件进行文件上传 并拒绝为文件 文档创建单独的实体 我只想在 Zend Laravel 等中进行简单的文件上传 我有一个发票表 最后一列名称为 附件 我想在此处存储其清理后的名称 例如
  • 误报选项不会出现在项目中

    我在 Ubuntu 12 01 机器上使用 Sonarqube 我使用 Sonar Runner 和 Jenkins 插件来分析我的代码 当我对新项目进行分析时 问题就出现了 例如 我已经保存了 Sonar A 和 B 项目 如果我对该项目
  • 理解 Dymola 错误消息时遇到问题

    谁能告诉我 代数环 的含义 以及我应该如何通过添加 预 运算符来应对这种情况 我真的没看懂 Error Failed to generate code for an algebraic loop involving when equatio
  • 如何动态计算HTML页面表格中每一列的总计?

    我基本上会有一个表格 其中包含一周中的几天 标题行交叉 第 1 栏 周日 第 2 栏 周一等 每个单元格将输入工作时间 即8 最后一行 我希望每个单元格在将数据输入到每个单元格后动态计算其列中其上方单元格的总数 理想情况下 应在将光标移动到
  • 每个外键都有索引?

    每个外键上的索引是否都会优化查询 通常 在外键上放置索引被认为是良好的做法 这样做是因为在将 FK 表链接到包含键定义的表时 它有助于提高联接性能 这不会神奇地使您的整个查询得到优化 但它肯定有助于提高 FK 与其主键对应部分之间的连接性能
  • 如何检测 GHC 默认生成 32 位还是 64 位代码?

    我的里面有以下内容makefile https github com bsl GLFW b blob master Makefile GLFW FLAG m32 O2 Iglfw include Iglfw lib Iglfw lib co
  • jwt 令牌过期后如何注销

    我正在开发一个网络应用程序 使用node js and vue js 我正在使用进行身份验证和维护会话jwt and passport js using passport jwtstrategy 我已经完成了从创建 jwt 到保护路由的所有