Laravel:如何为多域验证

问题描述 投票:1回答:1

我有三个网站的Laravel应用程序,列在我的.env文件中

A_DOMAIN=example-A.com
B_DOMAIN=example-B.com
C_DOMAIN=example-C.com

我的管理区域位于example-A.com/admin。我现在想要管理员可以使用用户登录到其他域之一。

这是我到目前为止所尝试的:

public function login(User $user, $orga)
{
   \Auth::->login($user);

   return redirect(env($orga . '_DOMAIN'));
}

问题是,由于管理区域位于example-A.com/admin,因此调用\Auth::->login($user);将在example-A.com登录用户。这意味着login($user, 'B')确实在example-A.com登录用户,然后重定向到用户未登录的example-B.com

我的问题:我如何为我的应用程序的任何其他域登录用户?或者是否可以同时登录所有3个域的用户?

php authentication laravel-5
1个回答
1
投票

所需要的是在两个不同域之间转移会话的可能性。

为了实现这一点,您需要执行以下操作(这是其中一个选项):

  1. setcookieexample-B.com上创建一个名为example-C.com的方法,它可以检索一个令牌并为用户写一个会话cookie。
  2. loginexample-A.com方法中:使用curl登录example-B.com。 - 我假设你们所有3个站点都有登录控制器,因为curl的使用不在主题,我不打算在这里粘贴代码,我相信你可以处理:)
  3. 成功登录后,从example-B.com获取会话cookie。
  4. 向登录用户显示qazxsw poi,如qazxsw poi,将会话cookie写入admin用户。
  5. 现在已登录的会话已从<img>转移到用户,他现在可以作为登录用户访问<img src="http://example-B.com/setcookie?token=xxxx" style="display: none;" />

编辑:对不起,我不经常使用laravel :(我使用一个名为ThinkPHP的框架,它在中国的时尚,语法类似于laravel,希望我能帮到你

出于安全原因,您无法为其他域设置cookie,但您可以访问其他域并为该用户设置cookie。

第1步代码:

添加一个新控制器并在其中编写一个函数:

curl

因此,example-B.com登录用户并获得会话ID,然后仪表板页面向用户显示隐藏的public function setcookie($token = '') { // the $token here is the $_GET['token'] parameter filtered by the framework if(!empty($token) && strlen($token) > 0) { // check if the param is not empty... setcookie("PHPSESSID", $token, 0, '/', '', false, true); // this will set a cookie for anyone who visited this action } } ,以便为用户设置会话ID为curl的会话cookie,然后用户可以作为登录用户访问其他站点。

© www.soinside.com 2019 - 2024. All rights reserved.