gpt4 book ai didi

loginUsingId 的 Laravel 问题(手动身份验证)

转载 作者:行者123 更新时间:2023-12-03 23:58:26 24 4
gpt4 key购买 nike

我正在尝试实现 多域单点登录 .这个概念非常简单,即发送唯一的用户 token ,然后验证这些 token 以找到用户,然后让他登录。

现在在验证 token 然后抓取用户之后,我做这样的事情

$loggedInUser = Auth::loginUsingId($user->id, true);

现在我有一个自定义中间件,它首先检查登录用户,即
Auth::Check()

以上第一次工作正常。但刷新时 Auth::check() 未验证。我也尝试过使用所有不同的 session 驱动程序,但仍然无法正常工作。

我在 Laravel 5.2 上使用了类似的代码,它确实有效。但是在 laravel 5.3 上,它不会对持久请求进行验证。

编辑:让我向您展示我的代码
我没有修改 AuthServiceProvider 或任何其他守卫。我确实在目录中有用户模型,但我修改了 auth.php 中的路径。

以下是 domain1 指向的路由:

http://domain2.com/ {{$role}}/{{$route}}/singlesignon/{{$token}}

然后由 loginController 中的 verifySingleSignOn 方法获取,该方法承担角色、用户从其他域和 token 进来的路由。然后用户被重定向到相同的路由,但在域 2 上。在这里,我可以在手动登录之前成功收到用户 ID。
public function verifySingleSignOn($role, $route, $token)
{
// Fetch Single Signon
$userRepository = new UserRepository();
$user = $userRepository->checkForSingleSignOnToken($token, ['id']);

// Check if Token Exists
if (isset($user->id) && is_int($user->id) && $user->id != 0) {

// Manually Logging a user (Here is successfully recieve the user id)
$loggedInUser = Auth::loginUsingId($user->id);

if (!$loggedInUser) {
// If User not logged in, then Throw exception
throw new Exception('Single SignOn: User Cannot be Signed In');
}
$redirectTo = $role . '/' . $route;
return redirect($redirectTo);
} else {
return Auth::logout();
}
}

然后我有这个 GlobalAdminAuth 中间件
   // Check if logged in
if( Auth::Check() ){
$user = Auth::User();

// Check if user is active and is a globaladmin
if( !$user->isGlobalAdmin() || !$user->isActive() ){
return redirect()->guest('login');
}
}else{
return redirect()->guest('login');
}

return $next($request);

现在第一次一切正常,用户成功地通过中间件。但是第二次触发 else 语句。

编辑: checkForSingleSignOnToken 的代码
public function checkForSingleSignOnToken($token, $columns = array('*'))
{
return User::where('single_signon', $token)->first($columns);
}

最佳答案

尝试

Auth::login($user);



代替
Auth::loginUsingId($user->id, true);

关于loginUsingId 的 Laravel 问题(手动身份验证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39360314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com