Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel:从一个子域登录到另一个子域:会话问题_Laravel_Laravel 5_Laravel 4 - Fatal编程技术网

Laravel:从一个子域登录到另一个子域:会话问题

Laravel:从一个子域登录到另一个子域:会话问题,laravel,laravel-5,laravel-4,Laravel,Laravel 5,Laravel 4,我在一个具有多个子域(每个域都有不同的用户)的应用程序中使用Laravel4.2上的Sentry:我想从一个子域(domain-a.maindomain.com)登录到另一个子域(domain-b.maindomain.com),而无需跨子域持久会话 任何人都知道如何使用laravel实现这一点,我对5.1版之前的laravel并不熟悉,但文档中有一部分与身份验证相关: 使用此功能,您可以对从一个域到另一个域的用户进行身份验证。您需要将某些内容从第一个域传递到第二个域,这是两个用户模型之间唯一

我在一个具有多个子域(每个域都有不同的用户)的应用程序中使用Laravel4.2上的Sentry:我想从一个子域(domain-a.maindomain.com)登录到另一个子域(domain-b.maindomain.com),而无需跨子域持久会话


任何人都知道如何使用laravel实现这一点,我对5.1版之前的laravel并不熟悉,但文档中有一部分与身份验证相关:


使用此功能,您可以对从一个域到另一个域的用户进行身份验证。您需要将某些内容从第一个域传递到第二个域,这是两个用户模型之间唯一的公共属性,然后对匹配的用户进行身份验证。

我不熟悉5.1版之前的Laravel,但文档中有一部分与身份验证相关:

使用此功能,您可以对从一个域到另一个域的用户进行身份验证。您需要将一些内容从第一个域传递到第二个域,这是两个用户模型之间唯一的公共属性,然后对匹配的用户进行身份验证。

在(php/mysql)中,我们可以在所有数据库中创建一个名为
IslogedIn
(或您喜欢的其他内容)的行,使它们看起来像:

     //---------------------------------------------
     //  (main database)    --> site1.com
     //   ------------------------------------------
     //  | id  | username  | password |  IslogedIn  |
     //  |-----|-----------|----------|-------------|
     //  |  1  |  jhony    |   pass   |      0      |
     //  |-----|-----------|----------|-------------|


     //---------------------------------------------
     //  (2nd database)    --> site2.com
     //   ------------------------------------------
     //  | id  | username  | password |  IslogedIn  |
     //  |-----|-----------|----------|-------------|
     //  |  1  |  jhony    |   pass   |      1      |
     //  |-----|-----------|----------|-------------|
例如,这里我们看到用户登录了第二个数据库
因此,该值将为:
IslogedIn=1

我们将在我们所有的域中使用它,
从“login.php”(在Laravel中,它可能是其他东西),从“login.php”,如果用户使用一些mysql命令登录,我们将标记为
IslogedIn=1

之后,我们使用一个scrip页面连接所有数据库,在两个域文件夹中将其命名为“checkout.php”,并在其中写入:

  • 1-对于旧的php版本:

    $Db_Main_con = mysql_connect($hostname, $username, $password ); 
    $Db_2nd_con  = mysql_connect($hostname, $username, $password , true);  
    //-------------------------------------------------------------
    $Db_Main_Select = mysql_select_db("Database_name1", $Db_Main_con);
    $Db_2nd_Select  = mysql_select_db("Database_name2", $Db_2nd_con );
    //-------------------------------------------------------------
    $Db_main = mysql_query("select * from users where id = :id", $Db_Main_Select);
    $Db_2nd  = mysql_query("select * from users where id = :id", $Db_2nd_Select);
    
  • 2-对于新版本来说,通常只是在过去的代码中做了一些类似的更改,
    例如
    mysql
    mysqli
    。阅读本文:

我不熟悉Laravel,所以ofc可以更改“$host\u main\u name”和“$username”以及(表名)。。。。。等等,以支持您的脚本

并从每个db调用
$string
中的行:(IslogedIn)

然后,我们检查用户是否记录在所有数据库中:

    if ( $Db_Main->IslogedIn  || $Db_2nd->IslogedIn  )
     {
      // ----->> your login code or relogin code here
      //         + sessions and cookies and reloud link and all other stuff 

     }
然后我们用
$Db_Main->close()关闭脚本$Db_第二->关闭()。。。。在(php/mysql)中,我们可以在您的所有数据库中创建一个名为
IslogedIn的行(或您喜欢的其他行),以便它们看起来像:

     //---------------------------------------------
     //  (main database)    --> site1.com
     //   ------------------------------------------
     //  | id  | username  | password |  IslogedIn  |
     //  |-----|-----------|----------|-------------|
     //  |  1  |  jhony    |   pass   |      0      |
     //  |-----|-----------|----------|-------------|


     //---------------------------------------------
     //  (2nd database)    --> site2.com
     //   ------------------------------------------
     //  | id  | username  | password |  IslogedIn  |
     //  |-----|-----------|----------|-------------|
     //  |  1  |  jhony    |   pass   |      1      |
     //  |-----|-----------|----------|-------------|
例如,这里我们看到用户登录了第二个数据库
因此,该值将为:
IslogedIn=1

我们将在我们所有的域中使用它,
从“login.php”(在Laravel中,它可能是其他东西),从“login.php”,如果用户使用一些mysql命令登录,我们将标记为
IslogedIn=1

之后,我们使用一个scrip页面连接所有数据库,在两个域文件夹中将其命名为“checkout.php”,并在其中写入:

  • 1-对于旧的php版本:

    $Db_Main_con = mysql_connect($hostname, $username, $password ); 
    $Db_2nd_con  = mysql_connect($hostname, $username, $password , true);  
    //-------------------------------------------------------------
    $Db_Main_Select = mysql_select_db("Database_name1", $Db_Main_con);
    $Db_2nd_Select  = mysql_select_db("Database_name2", $Db_2nd_con );
    //-------------------------------------------------------------
    $Db_main = mysql_query("select * from users where id = :id", $Db_Main_Select);
    $Db_2nd  = mysql_query("select * from users where id = :id", $Db_2nd_Select);
    
  • 2-对于新版本来说,通常只是在过去的代码中做了一些类似的更改,
    例如
    mysql
    mysqli
    。阅读本文:

我不熟悉Laravel,所以ofc可以更改“$host\u main\u name”和“$username”以及(表名)。。。。。等等,以支持您的脚本

并从每个db调用
$string
中的行:(IslogedIn)

然后,我们检查用户是否记录在所有数据库中:

    if ( $Db_Main->IslogedIn  || $Db_2nd->IslogedIn  )
     {
      // ----->> your login code or relogin code here
      //         + sessions and cookies and reloud link and all other stuff 

     }

然后我们用
$Db_Main->close()关闭脚本$Db_第二->关闭()。。。。etc
当结帐结束时。

我认为,由于Laravel身份验证系统使用cookies来管理会话,因此您实际上需要在要使用的每个子域上登录用户。为了避免这种情况,您可以使用另一个会话驱动程序,如数据库。而
@SUB-HDR
在他的评论中给你的也是一个很好的方法

我认为,由于Laravel身份验证系统使用Cookie来管理会话,因此您实际上需要在要使用的每个子域上登录用户。为了避免这种情况,您可以使用另一个会话驱动程序,如数据库。而
@SUB-HDR
在他的评论中给你的也是一个很好的方法

有趣的做法:)。我假设您正在维护一个遗留系统?那些
mysql
语句请求更新到
mysqli
lol@Spholt,这取决于他有什么php版本,他没有提到,重要的是方法和解决方案,如果他能够理解一般的方式,其余的内容很容易更改,比如
mysql
mysqli
,只需阅读我在下面的评论中提到的文章(测试方法:)。我假设您正在维护一个遗留系统?那些
mysql
语句请求更新到
mysqli
lol@Spholt,这取决于他有什么php版本,他没有提到,重要的是方法和解决方案,如果他能够理解一般的方式,通过阅读我在下面的评论中提到的文章,可以很容易地将其他内容更改为
mysql
mysqli