php - Laravel 应用程序在重定向时注销经过身份验证的用户(不应该)
问题描述
我创建了一种方法,通过来自单独网站的链接将用户登录到我们的网站。我们使用令牌和用户名来查找用户,然后使用内置的登录方法对他们进行身份验证(我可以确认这一切都按预期工作)。
这是功能:
public function login($username, $token, $redirect)
{
$accountLogin = AccountLogin::Where('username', $username)
->Where('token', $token)
->first();
if ($accountLogin) {
try {
Auth::login($accountLogin);
print_r(Auth::check()) // prints 1.
header('Location: ' . $redirect);
exit;
} catch (\Exception $e) {
return $e->getMessage();
}
}
echo(array(
'status' => 'error',
'message' => 'Error logging in'
));
}
我的问题是用户似乎在重定向后已注销。
在上面的函数中,我可以看到帐户已找到,并
Auth::check()
返回 1,或者如果我回显,Auth::User()
则我确实获得了用户信息。
然后我们尝试进行重定向,这应该将我们带到作为参数传入的路由(您确实需要对所有这些路由进行身份验证),但我被重定向到主页并注销。如果我从该页面登录,那么它会将我带到我最初想要访问的 url(所以它就像在记住我想去的地方,但只是不承认我已经登录)。
这两个站点目前都通过 apache 在本地运行。
TIA。
解决方案
而不是以这种方式重新定向:
header('Location: ' . $redirect);
exit;
用这个 :
return redirect($redirect);
Laravel 有它自己的重定向辅助方法,你最好使用它来代替。还以您的方式重定向并在其末尾退出,破坏了存储在 session 中的用户 ID,因此它假定该用户未登录。
推荐阅读
- c++ - 显示每个排列的算法(尤其是对于 c++)
- r - Data.table 替代 pmap 和 reduce?
- javascript - 将 React 道具传递给 DOM 元素时遇到问题
- java - 软件连接中止:socket write error Tomcat8
- javascript - 如何在php文件中追加数据
- html - 为什么我的第一行 DIV 缺少一个 DIV?
- python - pyspark 的 Python 循环函数问题
- php - 在具有附加绑定值的 db2 查询上获取无效参数标记
- ios - Swift 中使用的 Objective-C 框架 - 使用方法错误的模棱两可
- php - SOAP PHP 中的属性