簡體   English   中英

Nuxt Auth Module - 將JWT保存在Vuex商店中

[英]Nuxt Auth Module - save JWT in Vuex store

登錄/注銷/中間件等本身可以工作,但我似乎無法控制令牌。 我正在嘗試在登錄后將JWT保存在Vuex存儲中,但令牌僅保存在cookie和localStorage中。 從文檔中我了解到,自動添加了對Vuex中的auth的支持。 我沒有在配置中定義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。$ state時,它返回

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

我希望令牌也可以保存在$auth

我也看了一個類似標題問題 ,但他們的解決方案對我不起作用,因為我使用的是user: false

我查看了auth-module的default.js文件並嘗試了nuxt.config.js的默認值。 將默認值添加到我的配置后,它開始工作。 所以現在我能夠禁用cookie和localStorage,同時只將JWT保存到商店中。

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保存? 即使文檔說明默認令牌可以解釋為什么,也會將其保存在三個位置。

Auth令牌存儲在各種存儲提供程序中(cookie,localStorage,vuex)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM