我已经实现entrust
了角色和权限。我有 3 个角色,超级管理员、管理员和客户。
超级管理员可以访问网络应用程序(例如 www.myurl.com)
管理员只能通过 api 访问,即通过 api.php 路由的移动应用程序(例如 www.myurl.com/api/login)
客户可以通过 api 即移动应用程序访问
现在,我发现了一个错误,当管理员尝试使用他的凭据通过 www.myurl.com.login 登录时,他被允许登录!!!
在进一步调查中,我发现我需要login
在登录时更改方法并提供角色检查,但我无法通过。我更改了登录功能如下,但管理员和客户仍然可以登录!
public function login(Request $request)
{
$this->validateLogin($request);
if ($this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);
return $this->sendLockoutResponse($request);
}
//I updated the following code of default login function.
$checkAdmin = $this->attemptLogin($request);
$isAdmin = Auth::user();
if ( $checkAdmin && $isAdmin->hasRole('super')) {
//With super-admin if I do dd('hi') here, I am getting control
return $this->sendLoginResponse($request);
}
//But for other roles, it is directly taking them to the super-admin (home) page!!
.
. //Rest of the login function...
我试图dd(1)
了解流程,但是对于超级用户,我得到了dd
响应,而对于其他用户,它没有进入该块并将非超级管理员角色重定向到主页!
我正在使用Laravel 5.4
andentrust package
作为角色。