这是我的身份验证配置:
auth: {
strategies: {
local: {
scheme: 'refresh',
token: {
property: 'jwtToken',
},
refreshToken: {
property: 'refreshToken',
data: 'refreshToken',
},
user: false,
endpoints: {
login: { url: '/api/account/authenticate', method: 'post' },
logout: { url: '/api/account/logout', method: 'post' },
refresh: { url: '/api/account/refresh-token', method: 'post' },
user: false,
},
},
},
},
这是我对身份验证的商店操作:
async login({ commit }, data) {
try {
const {
data: { jwtToken, refreshToken },
} = await this.$auth.loginWith('local', { data })
await this.$auth.setUserToken(jwtToken, refreshToken)
const decodedJwt = jwtDecode(jwtToken)
this.$auth.setUser({ userId: decodedJwt.sub })
await this.$router.push('/dashboard')
} catch (e) {
this.$n?.myError()
}
},
async logout() {
const refreshToken = localStorage.getItem('auth._refresh_token.local')
await this.$auth.logout({ data: { refreshToken } })
},
当然,刷新后 $auth 中的用户属性会被删除。我想在页面刷新时再次设置它。如何在不为用户添加新 API 的情况下实现这一点?我已经尝试为此创建中间件,但它们适用于所有路由而不是指定路由。我只需要简单的解决方案,例如从 localStorage 获取 jwt 令牌并从中获取 userId。