php - 如何使用自定义管理表重定向到管理页面

标签 php laravel eloquent laravel-5.4

我使用自己的(原始)方法来拥有管理员用户,而不是 laravel multi auth。

我在数据库中只有一个名为 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 将为 false 并且 elseif将执行。

不幸的是,这不起作用,我不知道为什么。

也许这根本不是正确的做法。

谁能帮我解决这个问题。

附言我不想使用 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);


}

更清晰,更容易。

关于php - 如何使用自定义管理表重定向到管理页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48011939/

相关文章:

laravel - Laravel 签名路由的安全性如何?

laravel - 在 Laravel Blade 中转义 VueJS 数据绑定(bind)语法?

php - Laravel:获取数组元素以显示在表格上

php - Laravel 5.2WhereNotIn 查询

php - SQL-根据列表顺序对项目进行排序

php - 我的IP是否在我的数据库中,如果有的话找到时间戳

php - 向哈希添加盐后无法使登录脚本工作;之前工作得很好

php - 在 codeigniter 中从数据库中选择手机

laravel - 在Laravel中将ID列添加到数据透视表有什么好处?

php - 为不同的查询克隆 Eloquent 模型