如果连接的用户不是管理员,我有一个简单的应用程序需要保护一些页面。
我使用 nuxt/auth 包来处理身份验证:
auth: {
strategies: {
local: {
scopeKey: 'roles',
token: {
property: 'access_token',
type: 'Bearer',
name: 'Authorization',
},
user: {
property: 'user',
},
endpoints: {
login: {url: '/api/auth/login', method: 'post'},
// logout: { url: '/api/auth/logout', method: 'post' },
user: {url: '/api/auth/me', method: 'get'}
}
},
},
redirect: {
login: '/',
logout: '/',
callback: '/housing',
home: '/home'
},
plugins: [
'~/plugins/auth.js',
]
},
这很好用,但我无法实现我的中间件。所以我想要的是将用户重定向到主页,如果他们没有角色ROLE_ADMIN
export default function ({app, $auth, $axios}) {
if (!$auth.user.roles.includes('ROLE_ADMIN')) {
console.log("unauthorized");
app.router.push(app.localePath('home'));
}
}
我在我想要的页面上使用中间件。例如,当用户登录并进入管理页面而不刷新页面时,它可以完美运行。
但是,如果他们去刷新页面或使用直接 URL,在被我的中间件重定向到主页后,nuxt/auth 会再次将我的用户重定向到“未授权”页面。
为什么会有这种行为?