【问题标题】:How create middleware on laravel SPA from cretueusebiu如何从 cretueusebiu 在 laravel SPA 上创建中间件
【发布时间】:2020-08-13 03:30:59
【问题描述】:

我是新手,刚刚学习 laravel SPA。我尝试从 github 创建项目 laravel spa:https://github.com/cretueusebiu/laravel-vue-spa

所以下一步我想添加中间件,但在结构中我不知道会发生什么。

这个文件夹在

js
  middleware
        admin.js
        auth.js
        check-auth.js
        guest.js
        locale.js

在 admin.js 上

import store from '~/store'

export default (to, from, next) => {
  if (store.getters['auth/user'].role !== 'admin') {
    next({ name: 'home' })
  } else {
    next()
  }
}

这个角色是管理员,但在表用户上我没有看到任何关于角色或任何东西的信息,请告诉我。 已经使用过这个的人,我只是想问一下,如何创建一些中间件,比如用户、管理员、超级管理员或任何东西。谢谢你

【问题讨论】:

  • 你能分享你已经试过的代码吗?
  • 所有代码都正常工作,但我不知道创建另一个中间件的步骤是什么
  • 默认情况下不启用特定中间件admin.js。你想使用那个中间件还是只创建类似的东西?
  • 是的,我想启用这个中间件,但我不知道该怎么做

标签: laravel vue.js single-page-application


【解决方案1】:

我认为您要制作的东西通常称为守卫(或大门)。这通常由中间件完成,但中间件可以用于更多。

在您的特定实例中,您可以通过将middleware: 'admin' 添加到组件脚本中来启用组件中的admin.js 中间件。

您对用户的角色字段是正确的。您需要将角色添加到用户表(也可能是模型)。您应该能够在 Vue 开发工具中看到它。 您现在可以将其添加为文本字段或枚举。使用角色表有更好的方法。但是枚举又快又脏。

admin.js 仅保护“管理员”角色,因此您只需复制/粘贴文件并将store.getters['auth/user'].role !== 'admin' 更改为您想要保护的任何角色。 js/middleware/ 目录中的任何文件看起来都是从 js/router/index.js 自动加载的

例如,如果您创建一个名为 superUser.js 的中间件并将保护更改为 store.getters['auth/user'].role !== 'superUser' 您可以将middleware: 'superUser' 添加到您的组件中。

【讨论】:

  • 所以我只需要在 router.js 中添加一个表角色和中间件:'admin'?
  • 你也许可以在 router.js 中添加它。但是加载看起来像是从组件本身的键 middleware: 中获取的。如果你只是想让它工作,你需要在用户表中添加一个 role 字段,如果你想去角色表,但你需要做一些工作才能让它在用户对象下的 vuex 存储
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 2017-06-18
相关资源
最近更新 更多