如何使用自定义管理重定向到管理页面 table
How to redirect to admin page with custom admin table
我使用自己的(原始)方法来拥有管理员用户,而不是 laravel 多重身份验证。
我在名为 PAdmin
的数据库中只有一个额外的 table,在这个 table 中我有管理员用户的 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
table中有用户ID的记录,$isAdmin
将为false,elseif
将执行。
不幸的是,这不起作用,我不知道为什么。
也许这根本不是正确的方法。
谁能帮我解决这个问题。
P.S。我不想使用 multi auth
.
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
if(PAdmin::where('user_id',Auth::id())->first() != null) return redirect('/admin');
return redirect('/home');
}
return $next($request);
}
更清晰,更容易。
我使用自己的(原始)方法来拥有管理员用户,而不是 laravel 多重身份验证。
我在名为 PAdmin
的数据库中只有一个额外的 table,在这个 table 中我有管理员用户的 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
table中有用户ID的记录,$isAdmin
将为false,elseif
将执行。
不幸的是,这不起作用,我不知道为什么。
也许这根本不是正确的方法。
谁能帮我解决这个问题。
P.S。我不想使用 multi auth
.
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
if(PAdmin::where('user_id',Auth::id())->first() != null) return redirect('/admin');
return redirect('/home');
}
return $next($request);
}
更清晰,更容易。