我已经创建了一个nuxt应用程序,并为API提供了一个laravel服务器。在登录时,响应返回user对象和auth令牌。因此,一旦登录,$auth.user就被设置为user对象。当我刷新时,$auth.user设置为{},而loggedIn仍然为真。我该怎么解决这个问题。
这是我下面的登录功能
async userLogin() {
await this.$auth.loginWith('local', { data: this.login })
.then(async (res) => {
if(res.data.success){
const data = res.data.data.user;
this.$auth.setUser(data)
})
},
这是我的nuxt.config文件
auth: {
strategies: {
local: {
scheme: 'refresh',
localStorage:{
prefix: 'auth.'
},
token:{
prefix: 'token.',
property: 'data.authorization.token',
type: 'Bearer',
global: true,
},
refreshToken:{
prefix: 'refresh_token.',
property: 'data.authorization.token',
},
user: {
property: false,
autoFetch: false
},
endpoints: {
login: { url: '/login', method: 'post' },
logout: { url: '/logout', method: 'post' },
refresh: { url: '/refresh', method: 'post'},
user: false
}
}
},
plugins: ['~/plugins/auth.js']
},
我在某个地方读到应该使用this.$auth.$storage.setUniversal(用户)。我尝试过这样做,但是当我登录时,auth.user对象是空的,没有刷新。
请帮帮忙!
发布于 2022-10-12 16:52:30
看起来,您需要将用户端点设置为false。
如果您看一下nuxt文档https://auth.nuxtjs.org/schemes/local/#fetch-user
auth模块不保存有关用户的信息,因此需要有一种方法来获取用户的信息,例如页面重新加载。这就是用户端点的用途。默认情况下,这也是在成功登录后调用的。
因此,这解释了为什么在登录时对象不是空的,但是在刷新时它又是空的。
看看这个例子--注意用户端点和autoFetch设置为true (默认设置为true )。
auth: {
strategies: {
local: {
token: {
property: 'token',
global: true,
// required: true,
// type: 'Bearer'
},
user: {
property: 'user',
autoFetch: true
},
endpoints: {
login: { url: '/api/auth/login', method: 'post' },
logout: { url: '/api/auth/logout', method: 'post' },
user: { url: '/api/auth/user', method: 'get' }
}
}
}
}https://stackoverflow.com/questions/74045332
复制相似问题