0

2 つの仮想ホストがあります。

Ex. testproject1.net and
    testproject2.net

そこで 2 つの簡単なログイン スクリプトを作成しました。私はそれにSSOの実装を実装したいと考えています。ユーザーがtestproject1.netで認証したら、両方の仮想ホスト(testproject1.netとtestproject2.net)のセッションを設定したいと思います。testproject2.net を開いた場合、セッション値を取得して自動的に認証することを意味します。

これに対処するために助けてください。

前もって感謝します

4

1 に答える 1

2

よし、ここまでだ。必要に応じて、別のものを用意Virtual Hostしてauthproject.netください。そして、認証情報をそこのフォームに投稿します。セッションで設定します。

ここで、資格情報をauthproject.netドメインに提供し、認証後にどこに移動するかを指定すると、認証データがそれぞれの宛先に送信されます。

のソースtestproject1.net/index.php:

<?php
    if (isset($_SESSION["user"]))
        die($_SESSION["user"]["name"] . " is logged in!");
    else
        die('<a href="auth.php">Login</a>');
?>

のソースtestproject1.net/auth.php:

<?php
    if (isset($_SESSION["user"]) && !count($_POST))
    {
        header("Location: index.php");
        die();
    }
    elseif (count($_POST))
        if ($_POST["username"] == "admin" && $_POST["password"] == "letmein")
            $_SESSION["user"]["title"] = "Administrator"; # The session is set
        else
            showForm(); # Invalid Password
    else
        showForm(); # Log In Screen
?>

<?php
    session_start();
    if (isset($_SESSION["user"]) && !count($_POST))
    {
        header("Location: index.php");
        die();
    }
    elseif (count($_POST))
        if ($_POST["username"] == "admin" && $_POST["password"] == "letmein")
        {
            $_SESSION["user"]["title"] = "Administrator"; # The session is set
            if (isset($_GET["redirect"]))
            {
                # Start crappy implementation :P
                echo '<form method="post" action="', $_GET["redirect"], '/auth.php" id="authfrm"><input type="hidden" name="username" value="', $username, '"><input type="hidden" name="password" value="', $password, '"></form><script type="text/javascript">document.getElementById("authfrm").submit();</script>';
            }
            else
                header("Location: index.php");
        }
        else
            showForm(); # Invalid Password
    else
        showForm(); # Log In Screen
?>

すべてのサイトで同じことが行われます。あなたがそれを得る願っています。

于 2012-10-12T09:43:24.170 に答える