当前位置: 首页 > 知识库问答 >
问题:

Nuxt Auth模块-在Vuex商店保存JWT

澹台镜
2023-03-14

登录/注销/中间件等本身可以工作,但我似乎无法控制令牌。我尝试在登录后将JWT保存在Vuex存储中,但令牌仅保存在cookie和localStorage中。从文档中我了解到,Vuex中对身份验证的支持是自动添加的。我没有在配置中定义tokenRequiredtokenType,因为它们是基于cookie的流所需要的文档(添加它们也不会改变任何事情)。

nuxt.config.js

modules: [
    '@nuxtjs/axios',
    '@nuxtjs/auth'
],
axios: {
    baseURL: 'https://api.example.com/'
},
router: {
    middleware: ['auth']
},
auth: {
    strategies: {
        local: {
            endpoints: {
                login: { url: 'login', method: 'post', propertyName: 'token' },
                logout: { url: 'logout', method: 'post' },
                user: false
            }
        }
    },
    redirect: {
        login: '/login',
        logout: '/',
        callback: '/login',
        home: '/'
    }
},

登录功能

await this.$axios.post('authenticate', {
    email: this.email,
    password: this.password
}).then(response => {
    if (response.success === 'true') {
        this.$auth.setUserToken(response.token)
    } else {
        //alert invalid login
    }
}).catch(error => {
    //alert server error
});

现在,当我成功登录并查看$auth时$声明它返回

{ "user": {}, "loggedIn": true, "strategy": "local" }

我希望令牌也保存在$auth中。

我也看了一个标题相似的问题,但是他们的解决方案不适合我,因为我使用的是user: false

共有1个答案

郎正平
2023-03-14

我查看了auth模块的默认值。js文件,并尝试在mynumxt中使用默认值。配置。js。在将默认值添加到我的配置中后,它开始工作。所以现在我可以禁用cookies和localStorage,同时只将JWT保存到store中。

auth: {
    strategies: {
        local: {
            endpoints: {
                login: { url: 'login', method: 'post', propertyName: 'token' },
                logout: { url: 'logout', method: 'post' },
                user: false
            }
        }
    },
    redirect: {
        login: '/login',
        logout: '/',
        callback: '/login',
        home: '/'
    },
    cookie: false,
    localStorage: false,
    token: {
        prefix: 'token.'
    },
},

$auth.$state返回

{ "user": {}, "loggedIn": true, "strategy": "local", "token.local": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" }

如果有人解释为什么默认值不起作用,为什么我必须将其包含在我的配置中,请让我知道。我假设由于某种原因,他们默认禁用了Vuex保存?即使留档状态可以被解释为默认令牌被保存在三个位置。

身份验证令牌存储在各种存储提供程序中(cookie、localStorage、vuex)

 类似资料:
  • 早上好,我正在从事一个vue项目,该项目在应用程序中同时使用vue路由器和vuex。只要登录成功,我就会将JWT令牌存储在vuex中。然而,我对以下几点感到困惑 1) 当路由器中的路由发生变化时,动态显示/隐藏我的导航栏中的登录/注销按钮2)访问vuex存储中的JWT令牌。js 因此,基本上我需要访问路由器中的vuex存储,以及如何在vuex状态更改时(即登录成功时)更新导航栏组件 下面是我的代码

  • 我目前正在尝试用VueJS将一个VueJS页面转换为NuxtJS。不幸的是,我有一些问题与认证的用户,我不能找到解决方案在谷歌。我只对客户使用Nuxt。API在express中是完全独立的,并且与现有的VueJS站点一起工作。 在Nuxt中,我现在用Auth模块向express服务器/API发送一个带有用户名和密码的请求。Api接收数据,对其进行检查,并在MongoDB中找到帐户。这完全是它应该做

  • 我们有一个在线商店,在三个表中存储产品详细信息: 产品(名称、描述、品牌)-总计10,000个条目 产品-变体(大小、价格、可用性)-总计80.000项 产品-属性(颜色)-总计60.000项 这给出了大约400.000项的总组合。 示例: 产品为“Nike Air Max” 变体是“尺寸36,70美元”、“尺寸37,72美元”、“尺寸38,74美元” 属性为“Color Red”和“Color

  • 问题内容: 我想弄清楚在使用python的turtle模块创建图形后如何保存位图或矢量图形图像。经过一番谷歌搜索后,我找不到一个简单的答案。我确实找到了一个名为canvas2svg的模块,但是我对python还是很陌生,我不知道如何安装该模块。有一些内置的方法可以保存乌龟画布的图像吗?如果没有,我应该在Ubuntu机器上哪里放置python的自定义模块? 问题答案: 这将为您提供帮助;我遇到了同样

  • 我在vue文件中的“方法”中有这个 我得到以下错误:未捕获(在promise中)TypeError:无法读取未定义的属性'$store'

  • 我使用Laravel 5与CACHE_DRIVERredis。我发现 /storage/framework/views/.下还有Views缓存文件是否可以在redis中存储视图缓存?我认为它会加快网站的速度。谢谢!