我在laravel 4.2上使用Sentry在一个应用程序中使用muti-subdomain(每个域都有不同的用户):我想从一个子域(domain-a.maindomain.com)登录到另一个子域(domain-b.maindomain) .com)没有跨子域持久化会话。
任何人都知道如何用laravel实现这个目标
答案 0 :(得分:0)
我在5.1版之前不熟悉Laravel,但有部分文档与身份验证有关:
https://laravel.com/docs/4.2/security
$user = User::find(1);
Auth::login($user);
通过此功能,您可以对从一个域到另一个域的用户进行身份验证。您需要将第一个域中的内容传递给第二个域,这是两个用户模型之间的唯一公共属性,然后对匹配的用户进行身份验证。
答案 1 :(得分:0)
在(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 |
// |-----|-----------|----------|-------------|
这里我们看到用户已登录2nd database
所以价值将是:IslogedIn = 1
我们将在我们所有的域中使用它和来自“login.php”(在Laravel中它可以是其他的东西),从“login.php”我们标记IslogedIn = 1
如果用户使用一些mysql命令登录。
之后我们使用脚本页面连接所有数据库,并在两个域文件夹中将其命名为:'checkout.php'并写入其中:
1 - :
$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
。阅读这篇文章:mysqli_connect
我不熟悉Laravel所以你更改了“$ host_main_name”和“$ username”和(表名).....等脚本你的脚本
并从每个db调用$string
中的行:(IslogedIn)。
然后我们去检查用户是否在我们拥有的所有Db中都是Logedin:
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_2nd->close(); .... etc
关闭脚本。
答案 2 :(得分:0)
我认为由于Laravel身份验证系统使用cookie来管理会话,因此您实际上需要在您将要使用的每个子域上登录用户。为避免这种情况,您可以使用其他会话驱动程序,如数据库@SUB-HDR
在评论中给你的是一个好方法。