【发布时间】:2017-12-28 17:40:52
【问题描述】:
我使用自己的(原始)方法来拥有管理员用户,而不是 laravel 多重身份验证。
我只是在数据库中有一个名为PAdmin 的额外表,在这个表中我有管理员用户的ID。
当我登录应用程序时,我想将管理员用户重定向到另一个页面,而不是 home 页面。
出于这个原因,我去了 Http\Middleware\RedirectIfAuthenticated 并从这里更改了代码:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
我改成这样了:
public function handle($request, Closure $next, $guard = null)
{
$user_id = Auth::id();
$isAdmin = PAdmin::where('user_id',$user_id)->get()->isEmpty();//returns 'true' if empty
if (Auth::guard($guard)->check() && $isAdmin) {//IF $isAdmin is TRUE it means that the user is not admin
return redirect('/home');
}elseif (Auth::guard($guard)->check() && !($isAdmin)){//IF $isAdmin is FALSE it means that the user is not admin
return redirect('/admin');
}
return $next($request);
}
思路很简单——如果PAdmin表中有用户ID的记录,$isAdmin会为假,elseif会执行。
很遗憾,这不起作用,我不知道为什么。
也许这根本不是正确的做法。
谁能帮我解决这个问题。
附:我不想使用multi auth。
【问题讨论】:
-
先检查你的 ->get() 数据。
-
你真的应该改变这个“如果 $isAdmin 是 TRUE 意味着用户不是管理员”
标签: php laravel eloquent laravel-5.4