【问题标题】:Laravel 5.3 Auth facade is changing to a default authenticated userLaravel 5.3 Auth 外观正在更改为默认的经过身份验证的用户
【发布时间】:2017-12-27 06:41:45
【问题描述】:

所以我在我的 laravel 网站中有一个自定义登录流程。用户位于可通过 API 访问的外部数据存储中。流程基本上是这样的。 (缩小)

public function login(Request $request) {
    $resultFromAPI = //call external API with email and password from $request
    if($resultFromAPI) {
        $user = User::find($resultFromAPI->user->user_id);
        if($user) { //user exists
             Auth::login($user);
             //dump( Auth::user() );
             return redirect('/');
        } else {
             $user = User::create([...]); //from $resultFromApi->user
             Auth::login($user);
             //dump( Auth::user() );
             return redirect('/');
        }
    }
}

如果我尝试使用user2@example.com 登录,转储将显示该用户的对象。但是,我被重定向到 /Auth::user() 的第二个将是 user1@example.com 我的本地数据库显示了这两个用户记录,但它默认为第一个用户。我正在使用默认注销功能来注销并清除会话,并且我已经确认在调用注销功能时Auth::user() 为空。我被卡住了。

编辑:我尝试了Auth::attempt(...) 而不是Auth::login(...),它没有改变任何东西

EDIT2:我从头开始使用全新安装的 laravel 5.4,将登录部分重写为这个

if ($this->attemptLogin($request)) {
  $request->session()->regenerate();
  $this->clearLoginAttempts($request);

  return $this->sendLoginResponse($request);
}

而不是这个

Auth::login($user);
return redirect('/')

还是一样的问题

【问题讨论】:

  • 你没有忘记一些测试代码,比如Auth::loginUsingId($user_id, true); 或类似的东西吗??
  • 我跟踪了从调用/login 到重定向到/ 的流程,包括中间件。 (我在路由中使用了auth 中间件)我什至在整个目录中搜索了Auth::,并没有发现任何异常。
  • 假设电子邮件user2@example.com的用户id = 2,尝试使用Auth::loginUsingId(2, true);而不在login方法中调用你的外部api,然后return redirect('/');看它是否会生成同样的问题!!
  • 还是同样的问题。用user1@example.com 重定向我。我尝试回显电子邮件(Auth::user()->email)并注释掉重定向功能,我得到了user2@example.com

标签: php laravel authentication


【解决方案1】:

终于解决了问题。我的主键是从我的外部 api 检索到的自定义 uuid。我将主要的 ley 恢复为默认的($table->increments('id'); 并且它有效。

looked it up,原来我可以在我的用户模型中完成public $incrementing = false;,它会阻止 Laravel 认为它是一个递增字段,这可能已经解决了它,但我还没有测试那。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 2017-10-23
    • 2017-01-22
    • 2015-01-15
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    相关资源
    最近更新 更多