【问题标题】:Laravel Auth::guard(guard)->check() not working as expectedLaravel Auth::guard(guard)->check() 没有按预期工作
【发布时间】:2017-01-19 07:34:50
【问题描述】:

我正在使用 Laravel 制作一个家庭作业网络应用程序,我正在尝试添加 3 组不同的人:管理员、教师和学生。我已将所有这些创建为模型,并且它们在数据库中都有表。登录脚本可以工作并将用户登录,但是当我使用此代码时会出现问题

    if(Auth::guard('student')->check() || Auth::guard('teacher')->check() || Auth::guard('admin')->check()) {
        return Redirect::to('/admin/overview')->send();
    }

登录有效,因为当我输入正确的用户名和密码时,我会被重定向,但当我使用不正确的用户名和密码时,我会被重定向到同一页面。

我的问题是这行代码没有做任何事情,似乎 Auth::guard('student')->check() 总是返回 false。这很奇怪,因为:

    if(Auth::guard('student')->attempt($credentials)) {
        return Redirect::to('/student/overview')->send();
    }

返回 true 并将我重定向到 /student/overview

【问题讨论】:

  • 对此感兴趣。在 Guard 功能上有不同的方法。最终调试 Laravel 几个小时,似乎用户并不总是被正确传递。最终只是放弃了守卫并进行了if (\Auth::user()->isAdmin() { ... }检查。我想知道是什么导致了这种情况发生,因为它甚至发生在框架的全新安装中。

标签: php laravel laravel-5.3


【解决方案1】:

我遇到了同样的问题,然后我尝试先创建Auth 的实例,然后使用check()

你需要这样管理,试试这个希望对你有帮助

$auth = Auth::guard('student');
if ($auth->check()) {
    return Redirect::to('/admin/overview')->send();
}

【讨论】:

  • 这不起作用,我不知道我只是真的很困惑,我的代码在这里github.com/JackPriceBurns/sinap/blob/authentication/app/Http/…
  • @user2710382 您的管理员和教师模型有问题,只需将其扩展为Authenticatableclass Admin extends Authenticatable
  • 我没注意到!我已经更新了文件,但我仍然不知道为什么 Auth::guard('student')->check() 返回 false :/
  • 直接Auth::guard('student')->check() 不行。你必须按照我指定的方式去做。就这样试试吧
  • 我只是尝试过,但什么也没有......我可能会看看 Laravel 是否有论坛或 IRC 并在那里询问
猜你喜欢
  • 2019-10-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 2016-09-07
  • 2016-03-11
  • 2019-10-13
  • 2016-07-30
  • 2020-02-15
相关资源
最近更新 更多