【问题标题】:Laravel: Check if User is an admin using isAdmin column?Laravel:使用 isAdmin 列检查用户是否是管理员?
【发布时间】:2021-08-21 01:01:15
【问题描述】:

我真的是 laravel 的新手,并且一直在阅读文档和教程。我打算制作一个具有 2 个角色的应用程序,管理员和用户。我修改了我的用户模型,使列“isAdmin”具有布尔值,因为我只需要 2 个角色。如何在身份验证期间对此属性进行检查?谢谢。

【问题讨论】:

  • 您好 Raihan,此线程中有多个问题。我建议每个线程保留 1 个。请更新。在此基础上,我会回答/指导你。
  • 嗨 Digvijay,只编辑了 1 个问题。
  • Computer Maverick 的回答很有希望。请遵循。干杯!

标签: php laravel


【解决方案1】:

要回答您的问题,首先要使用 auth 中间件保护任何路由,以确保用户在访问路由之前经过身份验证(登录),您只需添加 auth 中间件。 例如

web.php

<?php
Route::middleware('auth')->group(function(){
//All Routes which needs user to be logged in
});

or 

//Individiual Route Middleware
Route::get('/path/to', 'controller@instance')->middleware('auth');

至于检查用户角色,您基本上可以使用以下步骤为此创建一个中间件:

  1. 运行你的 php artisan make:middleware IsAdminMiddleware
  2. 打开您的 IsAdminMiddleware 并将此代码添加到句柄函数中:
公共函数句柄($request, Closure $next) { if(!Auth::check()){ 返回重定向()->路由('登录'); } if(Auth::user()->isAdmin == true){ 返回 $next($request); } return redirect()->back()->with('unauthorized', '你是 未经授权访问此页面'); }

【讨论】:

  • 其实有一个后续问题。如果我有单独的管理员和用户路由,我该如何对路由进行分组?我的猜测是将用户路由与 auth 中间件和管理路由与 auth 和 isAdmin 中间件进行分组。对吗?
  • @RaihanDewana 是的,你可以这样做。
猜你喜欢
  • 2018-02-02
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-02
相关资源
最近更新 更多