假设我有这条路线,到目前为止,我只知道可以通过nuxt-config.js(全局)或每条路线(独立)分配中间件
页面
- index.vue
- goSomeWhere.vue
- goThisWay.vue
- admin
- index.vue
- goThere.vue
- goHere.vue
我只想为每条/admin
路由分配一个中间件,那么还有另一种适合我的方法吗?
答案 0 :(得分:0)
肯定地,最简单的验证路由块的方法是使用针对所有以/ admin开头的路由为目标的全局中间件。
您可以在中间件文件夹中设置一个文件,该文件根据条件定义所需的重定向。显然,您想阻止未以管理员级别用户身份登录的任何管理员路由。为此,您应该在商店中为任何管理员用户设置“ admin”之类的属性,或者,如果您需要设置级别,则可以分配值admin1,admin2等。为简单起见,假设登录的任何授权用户在商店的用户对象中设置了属性$this->add($this->fileFieldset);
。
然后您应该在中间件文件夹中创建一个文件,我们将其称为“ auth.js”:
admin = true;
这只是检查用户是否将admin设置为true,以及所请求的路由是否需要auth。如果用户未被授权,它将重定向到您的索引页面。
您将需要在nuxt.config.js中注册中间件文件:
export default function ({store, redirect, route}) {
const userIsAdmin = !!store.state.user.admin;
const urlRequiresAuth = /^\/admin(\/|$)/.test(route.fullPath)
if (urlRequiresAuth && !userIsAdmin) {
return redirect('/')
}
return Promise.resolve
}
你应该很好。