如何为特定的路由组分配中间件?

时间:2020-06-11 20:16:05

标签: vue.js nuxt.js

假设我有这条路线,到目前为止,我只知道可以通过nuxt-config.js(全局)或每条路线(独立)分配中间件

页面

 - index.vue
 - goSomeWhere.vue
 - goThisWay.vue
 - admin
    - index.vue
    - goThere.vue
    - goHere.vue

我只想为每条/admin路由分配一个中间件,那么还有另一种适合我的方法吗?

1 个答案:

答案 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
}

你应该很好。