我在Laravel构建了一个多域/多商店电子商务应用程序,并希望在用户从商店更改为商店时保持登录状态。Laravel:通过多个域共享会话数据
但据我所知,Laravel的Auth服务会将登录的用户保存在会话中,并且会话不能被其他域访问。
有没有一种方法(也许是一个包)来实现这一目标,而不会让我的应用程序容易出现可能的安全问题?
在此先感谢!
我在Laravel构建了一个多域/多商店电子商务应用程序,并希望在用户从商店更改为商店时保持登录状态。Laravel:通过多个域共享会话数据
但据我所知,Laravel的Auth服务会将登录的用户保存在会话中,并且会话不能被其他域访问。
有没有一种方法(也许是一个包)来实现这一目标,而不会让我的应用程序容易出现可能的安全问题?
在此先感谢!
Session::getId()
一个$sessionid_from_domainA = $_POST['session_from_A']
Session::setId($sessionid_from_domainA)
Session::start()
我的工作类似的东西太单一登录系统,仍在努力寻找解决办法,但这里是一个开始http://laravel.io/forum/03-14-2014-multiple-domains-how-to-share-login
在laravel你可以改变/app/config/session.php司机使用网站
编辑:
这是我做了什么。
您可以使用像素图像共享cookie跨域。 例如,当你登录上domain1.com要创建domain2.com一个cookie,登录之后就domain1.com你需要有这样的事情
<img src="http://www.domain2.com/create-cookie?param=hash">
上domain2.com上面的路线:
警告,让您的用户: 不要发送电子邮件在以纯文本格式,这意味着我可以编辑html标签,并基本登录到其他域的任何帐户。使用您的应用密钥加密文本。 – Albert 2016-11-07 05:41:37
您可以手动设置会话cookie将被注册到哪个域,从而让它们在不同的站点中持续存在。只要编辑config/session.php
,在下面的部分:
<?php
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| Here you may change the domain of the cookie used to identify a session
| in your application. This will determine which domains the cookie is
| available to in your application. A sensible default has been set.
|
*/
'domain' => null,
?>
你还是局限于单一的顶级域名,虽然。所以你可以有store1.shops.com
和store2.shops.com
共享会话,但不可以有myshop.com
和shopsmart.com
。
如果你需要这种格式的东西,你可能会更好通过创建一个身份验证服务,并使用访问令牌来验证凭据。你也可以看看像OneLogin这样的服务。
在域A创建的图像,像这样<img src="https://DOMAINB.com/setcookie?id={{ Session::getId() }}" style="display:none;" />
在域B创建路线如下所示:
。
Route::get('setcookie', function(){
Session::setId($_GET['id']);
Session::start();
return 'Cookie created';
});`
$user = Auth::User;
对于任何人使用这个,我不确定这种方法是否安全,这是谷歌如何使用它,但现在他们使用OAuth – Albert 2017-10-19 06:13:35
我希望它是可能的,但不是。如果它具有相同的laravel安装但具有不同的域,则一旦您从域A登录到您的应用程序,就无法向自己发送POST请求并开始会话。 – 2016-05-10 13:22:32
我发现了一个更简单的方法来做到这一点,检查我的答案 – Albert 2016-11-07 05:53:37