我需要整合两个站点,什么是携带登录信息的最佳方式?

时间:2011-09-19 16:03:21

标签: php cookies login get integrate

所以,我有两个站点,站点A和B.我需要将B作为A的一部分。我通过向A添加模块来实现这一点,并且在该模块中,包含到B的链接的iframe。所以,实际上,B仍然可以作为独立站点访问,但也可以通过A访问。 现在,两个站点都需要登录才能允许访问。当通过站点A访问站点B时,我需要绕过站点B.我设法绕过它,但只有当两个站点托管在同一台服务器上时(我使用会话变量),但现在我需要能够绕过B上的登录屏幕,无论托管在哪个服务器上。 那么,我该怎么做?

起初我认为cookie,但cookie是特定于域的,这两个站点可能托管在不同的域上。

有没有办法使用GET?因此,站点A使用在url中写入的用户名调用url,然后站点B读取url,解析它并相应地登录。我不知道如何实现这个,我需要调用什么样的网址,网站B需要什么样的PHP代码,最后,你如何制作这样的东西安全?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

将带有散列的UUID发送到站点B.散列应该是只有两个服务器都知道并且可以解码的东西,所以类似下面的东西应该有效。

现场A

<?php
$salt = 'ashfiu8435t43434t fgfjgfgfuguSGDSBDY77;';
$uuid = ''; // this should be set to the users ID
$hash = sha1($salt . $uuid);
?>
<a href="http://siteb.com?hash=<?php echo ($hash); ?>&uuid=<?php echo $uuid; ?>">Site B</a>

现场B

<?php
$salt = 'ashfiu8435t43434t fgfjgfgfuguSGDSBDY77;';
$uuid = $_GET['uuid'];
$sent_hash = $_GET['hash'];
$local_hash = sha1($salt . $uuid);

if($sent_hash === $local_hash) {
   echo 'Logged in! Yay!';
} else {
   echo 'Authentication failed';
}

你应该让哈希更难以伪造或弄清楚并让它在给定时间后过期,这样人们就不能只保存哈希并重新使用它们或传递它们。我故意保持简单,以表明这可行。

相关问题