如何制作中间件来控制 Laravel 7 项目中没有 id 的没有人进入页面

Posted

技术标签:

【中文标题】如何制作中间件来控制 Laravel 7 项目中没有 id 的没有人进入页面【英文标题】:how can I make middlware to control the no one go to page without id ln Laravel 7 project 【发布时间】:2021-04-27 03:27:28 【问题描述】:

我有 LMS 项目并且有 3 个角色 adminteacherstudent 我无法制作中间件来控制任何人对管理员、教师或学生的访问权限,除了

这是一个 Laravel 7 项目。

【问题讨论】:

请分享更多细节——你想达到什么目标,为什么不能做到? 【参考方案1】:

因此,您可能希望确保每个人都经过正确身份验证和登录。

在您的路由文件中,您应该运行只有经过身份验证的用户才能通过auth 中间件访问的所有路由。

Route::group(['middleware' => ['auth']], function() 
    Route::get('/home', 'HomeController@index')->name('home');
    // more routes
);

要指定用户应该被重定向到哪里,你可以在app/Http/Middlware/Authentication.php打开中间件并检查方法

protected function redirectTo($request)

【讨论】:

我想从零开始创建中间件 @MazenKhalid 您可以在Laravel Docs阅读有关编写自己的中间件的信息【参考方案2】:

假设您的用户表中有角色列。

中间件代码应该是:

public function handle($request, Closure $next)
    
        if (Auth::user()-> role === 'ADMIN') 
            return $next($request);
         else 
            return back();
        
    

希望这将是有用的并且不要忘记阅读相同的 Laravel 文档,这将提高你的技能。

您也可以为其他角色创建中间件。

【讨论】:

以上是关于如何制作中间件来控制 Laravel 7 项目中没有 id 的没有人进入页面的主要内容,如果未能解决你的问题,请参考以下文章

使用 API 时如何组织 laravel 控制器 [关闭]

Laravel全局传递参数

如何将控制器中的 Laravel 4.2 beforeFilter 转换为 Laravel 5.2 中的自定义中间件

如何设置 Laravel 中间件的执行顺序?

laravel在中间件内生成的变量如何传到控制器

Laravel 使用中间件进行权限控制