【问题标题】:How to redirect to admin page with custom admin table如何使用自定义管理表重定向到管理页面
【发布时间】: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


【解决方案1】:
 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);


}

更清晰、更容易。

【讨论】:

    猜你喜欢
    • 2021-05-07
    • 2011-12-25
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 2016-05-04
    相关资源
    最近更新 更多