首页 > 解决方案 > Laravel:使用 isAdmin 列检查用户是否是管理员?

问题描述

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

标签: phplaravel

解决方案


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

网页.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', '你是
                  未经授权访问此页面');
            }

推荐阅读