Php Laravel Auth仅验证管理员/超级用户
我正在Windows开发机器上使用Laravel 5。我想在整个应用程序中自定义并使用Auth中间件来维护身份验证。 我的用例是标准用例。有两(或三)类用户-Admin和Regular(Regular将是所有非Admin的用户) 管理员具有明显的后端管理角色,因此有一个单独的路由组/Admin/,它应该将未标记的用户重定向到/Admin/login。我是这样安排的Php Laravel Auth仅验证管理员/超级用户,php,laravel,authorization,laravel-5,Php,Laravel,Authorization,Laravel 5,我正在Windows开发机器上使用Laravel 5。我想在整个应用程序中自定义并使用Auth中间件来维护身份验证。 我的用例是标准用例。有两(或三)类用户-Admin和Regular(Regular将是所有非Admin的用户) 管理员具有明显的后端管理角色,因此有一个单独的路由组/Admin/,它应该将未标记的用户重定向到/Admin/login。我是这样安排的 Route::group(['middleware'=>'auth', 'prefix' => 'admin'], fu
Route::group(['middleware'=>'auth', 'prefix' => 'admin'], function() {
Route::get('login','App\AuthController@getLogin');
Route::post('login','App\AuthController@postLogin');
});
发布登录表单时,如何要求Auth添加筛选器
- 是否只有从那些“is_admin”为真的用户中验证
- 或者要求it部门首先加入一个用户和一个UserRoles表,以便仅识别具有管理员角色的用户
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");
}
}
为什么不在您的登录代码中,只检查用户的类型,而不是处理身份验证过滤器并尝试仅在特定条件下“验证”呢 这是我的高级代码:
// get roles which are allowed to login to the admin panel
$roles = $this->userService->adminRoles();
$user = User::whereUsername(Input::get('username'))->whereIn('role_id', $roles)->first();
if (is_null($user)) {
// ...
}
// create our user data for the authentication
$userdata = array(
'username' => Input::get('username'),
'password' => Input::get('password'),
);
// attempt to do the login
// Auth::attempt($userdata) ....
这样,您在尝试登录时只需执行一次即可?谢谢,您的解决方案确实很实用。。在此之前,我也从Auth注销,以严格禁止普通用户尝试。如果应用了Auth中间件,如何能够看到登录页面?如果我的回答对您有所帮助,那么如果您也将其标记为acceped,那就太好了。非常感谢。