【问题标题】:Laravel advanced middlewaresLaravel 高级中间件
【发布时间】:2018-07-09 20:45:00
【问题描述】:

我在某些控制器的 __construct 中使用了这一行

$this->middleware('auth');

这会导致每个未登录的用户都将被重定向到登录页面。这当然可以,但是有一个问题。

我有两组用户。在数据库中,我有一个名为“角色”的列,它是布尔值。 0 表示基本用户,1 表示管理员。我该如何处理,只有管理员才允许进入某些控制器?我真的不知道如何以漂亮的方式做到这一点。

【问题讨论】:

标签: laravel login admin middleware


【解决方案1】:

你可以把东西传递给中间件,比如

$this->middleware('auth:1');

现在在中间件中,您可以检查经过身份验证的用户是否具有您传递的角色(在示例中为 1)。如果他们没有您需要的角色,那么您可以将他们重定向到登录屏幕,或者您想要处理它。

【讨论】:

  • 在哪里可以设置,auth:1 表示 role==1?
  • @MegoSoft auth 部分是中间件,冒号后面的部分是传递给中间件的信息。因此,您将向您的身份验证中间件的句柄方法添加一个参数来表示这一点。这就是您用于角色验证的内容。
【解决方案2】:

您可以使用以下代码来获取认证用户,然后编写自定义逻辑。

         if(Auth::user()->role==0)
         {
           //you are basic user
          }
          esle if(Auth->user()->role==1)
          {
          //you are admin
          }

您还可以为此类工作设置 Gates 和 Policies。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-27
    • 2020-03-15
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2023-03-31
    相关资源
    最近更新 更多