gpt4 book ai didi

php - Route.php 中的授权和身份验证 : Laravel 5. 1

转载 作者:可可西里 更新时间:2023-11-01 00:13:18 25 4
gpt4 key购买 nike

我有下面的路由来检查用户是否经过身份验证,然后才让他们访问该页面

<?php
Route::group([
'middleware' => 'auth',
], function() {

Route::get('/Categories-List', 'Skills\Category_Controller@index');
});

在我的 auth()->user() 中,有 RoleID 来检查用户是 Admin 还是其他角色。我想检查 RoleID 是否为 1 然后只允许他们访问该页面。

我可以在 Laravel 5.1 中设置授权和身份验证吗

最佳答案

好的,所以您需要创建 AdminMiddleware 并将其添加到路由中。

首先,打开您的 User 模型并向其中添加额外的方法:

public function isAdmin() 
{
return $this->RoleID == 1;
}

现在在控制台中运行:

php artisan make:middleware AdminMiddleware

打开您的 AdminMiddleware.php 并更改 handle 方法,使其看起来像这样:

if (!\Auth::user()->isAdmin()) {
if ($request->ajax()) {
return response('Admin account required.', 401);
} else {
return redirect('/'); // set here any url you need
}
}

return $next($request);

现在打开 app/Http/Kernel.php 并添加到 $routeMiddleware 属性新条目:

'isAdmin' => \App\Http\Middleware\AdminMiddleware::class,

最后修改成你的路线

'middleware' => 'auth',

进入

'middleware' => ['auth', 'isAdmin'],

这里的顺序很重要,如果你改变这里的顺序,如果用户没有登录,你会得到意外的异常。

根据您的需要,您可能还想在此处仅使用 isAdmin 中间件,以防您希望在用户未登录时进行除 auth 之外的其他重定向.在这种情况下,您需要合并来自 authisAdmin 的方法并使其满足您的需要。

关于php - Route.php 中的授权和身份验证 : Laravel 5. 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34338197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com