无法将Auth数据发送到laravel中的其他域

时间:2018-07-20 18:23:56

标签: php laravel session

im只需一次登录即可处理2个项目,因此,如果我已经登录www.domain1.com,那么我也将自动以相同的身份验证数据登录www.domain2.com。但是现在当我已经登录www.domain1.com时,身份验证数据没有发送到www.domain2.com。即时通讯使用会话共享身份验证数据,但仍然无法正常工作。这是我到目前为止所做的。 (项目仍在本地主机中)

www.domain1.com登录(控制器)

public function dologin(Request $r)
  {
    $credentials = array(
      'username' => $r->username,
      'password' => $r->password
    );
    if (\Auth::attempt($credentials)) {
      return view('setcookie');
    }
    else {
      return redirect()->to('/')->withErrors('Username or Password Incorrect !');
    }
  }

setcookie.blade.php

<body>
  <img src="http://localhost:8000/app_task/public/setcookie?id={{ Session::getId() }}" style="display:none;" />
</body>

www.domain2.com setcookie

Route::get('setcookie', function(){
  Session::setId($_GET['id']);
  Session::start();
  return 'Cookie created';
});

我可以在日志中(在域2上)获取会话ID,但是当我尝试获取\ Auth :: user()-> id(在domain2中)时,却获得了试图获取非对象属性的信息。错误,这意味着在domain1中登录的用户ID未共享到domain2(以及其他身份验证数据,例如用户名等)。请帮助我解释为什么我遇到这个问题,并给我一个解决方案。谢谢

1 个答案:

答案 0 :(得分:1)

我通过使用database session driver而不是file session driver来解决此问题,即时通讯对两个域使用相同的会话表,因此如果我设置了相同的身份验证,则user_id session iddomain1中的domain2。对于创建会话表,我使用laravel官方网站https://laravel.com/docs/5.6/session#driver-prerequisites 指南。