在laravel应用程序中,Auth :: user()在域中返回null

时间:2017-11-22 12:25:49

标签: laravel authentication cookies laravel-5.2

我在服务器a.com上托管了一个laravel应用程序,该应用程序处理其他服务器上设置的其他laravel应用程序的所有身份验证,Server 1 - app.com - 对系统和存储进行身份验证/用户管理它将在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也有用户表但没有密码,因此如果cookie访问任何这些服务器,系统将读取cookie并从cookie中提取用户对象并检查是否存在任何用户,创建用户,然后使用[Auth :: login($ user)]将用户登录到当前系统,如果用户已经存在,则会自动登录用户..

现在我们遇到的问题就是这一行 return redirect() - > route(' dashboard');它将您重定向到应用程序的仪表板页面,并且dd(Auth :: user()) - 它返回null,

我们无法弄清楚为什么会这样。因为Auth :: user()应该可以在整个应用程序中使用,只需将其视为谷歌的工作方式,

google.com, - 一个登录控制每个应用程序,包括youtube drive.google.com,mail.google.com,play.google.com,news.google.com,plus.google.com,youtube.com - 这就是我们要做的。

1 个答案:

答案 0 :(得分:2)

转到config / session.php并重命名此'cookie'=> 'laravel_session'到您的会话名称。例如'cookie'=>'foo_session'。这应该有用。

相关问题