我在 Windows 开发机器上使用 Laravel 5。我想在整个应用程序中自定义和使用 Auth 中间件,以维护身份验证。 我的用例是一个标准的用例。有两类(或三类)用户 - Admin 和 Regular(Regular 是所有非管理员的用户)。
管理员具有明显的后端管理角色,因此有一个单独的路由组/admin/,它将未登录的用户重定向到/admin/login。我是这样设置的..
Route::group(['middleware'=>'auth', 'prefix' => 'admin'], function() {
Route::get('login','App\AuthController@getLogin');
Route::post('login','App\AuthController@postLogin');
});
发布登录表单时,如何要求 Auth 添加过滤器
- 要么只从“is_admin”为真的那些用户中验证?
- 或者要求它首先加入 User 和 UserRoles 表以仅识别具有 Admin 角色的用户?
最佳答案
我建议你定义另一个中间件来检测用户是否是管理员而不是修改授权。现在将这个另一个中间件添加到您的路由中,只有管理员可以访问。
像这样添加几个中间件来路由
Route::group(['middleware' => ['auth','admin']], function() {
中间件看起来像
public function handle($request, Closure $next) {
if (Auth::user()->role == "admin") {
return $next($request);
} else {
return redirect("/")->withMyerror("You are not authorized for this action");
}
}
关于php - Laravel Auth 仅验证管理员/ super 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29842660/