Auth::user() returns 跨域,在 laravel 应用程序中为空
Auth::user() returns null across domain, in a laravel application
我有一个 laravel 应用程序托管在服务器 a.com 上,此应用程序处理其他服务器上设置的其他 laravel 应用程序的所有身份验证,服务器 1 - app.com - 对系统进行 authentication/user 管理并将其存储在 cookie 中以发送到服务器 2,3 和 4,
server 2. mail.app.com
server 3. fms.app.com
server 4. dod.app.com
服务器 2、3 和 4 上有一个初始化函数,它尝试解码从服务器 1 跨域发送的 cookie。看起来像这样。
public function initialize(){
$mail = json_decode($logged_in_user_cookie)->email;
$user = User::where('email', $mail)->first();
if(!$user){
$user = new User;
$user->email = $mail;
$user->save();
}
Auth::login($user);
if(Auth::check()){
//dd($user); - works fine..
return redirect()->route('dashboard');
}else{
echo 'user not logged in ';
}
}
服务器 2、3 和 4 也有用户 table 但没有密码,因此如果 cookie 访问这些服务器中的任何一个,系统会读取 cookie 并从 cookie 中提取用户对象并检查如果任何用户确实存在,创建用户然后使用 [ Auth::login($user) ] 将用户登录到当前系统,如果用户已经存在..它会自动登录用户..
现在我们遇到的问题是,在这条线上
return 重定向()->路由('dashboard');它会将您重定向到应用程序的仪表板页面,并且 dd(Auth::user()) - 它 returns null,
而且我们无法弄清楚为什么它会这样工作。因为 Auth::user() 应该在整个应用程序中可用,就像 google 的工作原理一样,
google.com, - 一次登录控制所有应用程序,包括 youtube
drive.google.com, mail.google.com, play.google.com, news.google.com, plus.google.com, youtube.com - 这就是我们正在努力做。
转到您的 config/session.php 并将此 'cookie' => 'laravel_session' 重命名为您的会话名称。例如 'cookie'=>'foo_session'。这应该有效。
我有一个 laravel 应用程序托管在服务器 a.com 上,此应用程序处理其他服务器上设置的其他 laravel 应用程序的所有身份验证,服务器 1 - app.com - 对系统进行 authentication/user 管理并将其存储在 cookie 中以发送到服务器 2,3 和 4,
server 2. mail.app.com
server 3. fms.app.com
server 4. dod.app.com
服务器 2、3 和 4 上有一个初始化函数,它尝试解码从服务器 1 跨域发送的 cookie。看起来像这样。
public function initialize(){
$mail = json_decode($logged_in_user_cookie)->email;
$user = User::where('email', $mail)->first();
if(!$user){
$user = new User;
$user->email = $mail;
$user->save();
}
Auth::login($user);
if(Auth::check()){
//dd($user); - works fine..
return redirect()->route('dashboard');
}else{
echo 'user not logged in ';
}
}
服务器 2、3 和 4 也有用户 table 但没有密码,因此如果 cookie 访问这些服务器中的任何一个,系统会读取 cookie 并从 cookie 中提取用户对象并检查如果任何用户确实存在,创建用户然后使用 [ Auth::login($user) ] 将用户登录到当前系统,如果用户已经存在..它会自动登录用户..
现在我们遇到的问题是,在这条线上 return 重定向()->路由('dashboard');它会将您重定向到应用程序的仪表板页面,并且 dd(Auth::user()) - 它 returns null,
而且我们无法弄清楚为什么它会这样工作。因为 Auth::user() 应该在整个应用程序中可用,就像 google 的工作原理一样,
google.com, - 一次登录控制所有应用程序,包括 youtube drive.google.com, mail.google.com, play.google.com, news.google.com, plus.google.com, youtube.com - 这就是我们正在努力做。
转到您的 config/session.php 并将此 'cookie' => 'laravel_session' 重命名为您的会话名称。例如 'cookie'=>'foo_session'。这应该有效。