簡體   English   中英

如何查看用戶是否登錄其他域?

[英]How to check whether a user is logged in on another domain?

我想為瀏覽器游戲社區構建一個社區頁面(該瀏覽器游戲不是我的,因此我無法添加任何代碼)。 現在,我想在我的網站上檢查用戶是否已登錄瀏覽器游戲。 只有在這種情況下,用戶才應該能夠看到內容。 由於您無法讀取在其他域上設置的cookie,是否有任何可能的方法來實現?

您可以使用類似CAS的名稱。 中央身份驗證服務器,在其中未為第一個域設置會話的情況下,它將是這樣的:

example.net

<?php
session_start();
if(!isset($_SESSION["user"]))
{
    header('Location: http://auth.example.com/?from=example.net');
    die();
}
// Rest of the content!
?>

對於域auth.example.com

<?php
session_start();
if(!isset($_SESSION["user"]))
{ ?>
    <!-- form to get login credentials -->
<?php } else {
     if(isset($_GET["from"]) && isset($_SESSION["user"]))
         header('Location: http://example.net/auth.php?authcode=' . yourEncryptFunction($_SESSION["user"]));
} ?>

希望這可以幫助! :)

如果您同時控制兩個域,則可以這樣做。 一種簡單但不安全的方法是使用JavaScript違反同源政策。 在您的瀏覽器游戲中運行一個簡單的腳本,例如:

<?php
$info = array(
    'isLoggedIn' => $_SESSION['isLoggedIn'],
    'loggedInAs' => $_SESSION['userName']
    );
echo "gameInfo = ".json_encode($info).";";

在您的社區頁面上,您可以使用JavaScript來確定它們是否已登錄:

<script src="http://gamesite.com/jsGameStatus.php"></script>
<script>
alert(gameInfo.isLoggedIn 
    ? 'Logged In as '+gameInfo.loggedInAs 
    : 'Not logged in');
</script>

同樣,它不是超級安全的(有人可能會捏造這些價值)。 如果您想要更安全的東西,則需要能夠以某種方式將雙方結合在一起-您的社區用戶帳戶必須知道他們的游戲帳戶ID是什么,然后您可以使用簡單的社區站點的遠程呼叫,以了解游戲用戶是否已登錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM