我想出了下面的腳本/解決方案:
<?php
$validApplications = array("Application_1", "Application_2");
$baseUrl = 'http://' . $_SERVER["SERVER_NAME"] . '/';
if(!isset($_SERVER["REMOTE_USER"])){
header('HTTP/1.1 401 Not Authorized', true, 401);
//...display error page
exit(0);
}
if(!isset($_GET["applicationName"])
|| !in_array($_GET["applicationName"], $validApplications)){
header('HTTP/1.1 400 Bad Request', true, 400);
//...display error page
exit(0);
}
$application = $_GET["applicationName"];
if(!isset($_GET["returnTo"])){
$returnTo = $baseUrl . $application . "index.php";
} else {
$returnTo = $_GET["returnTo"];
}
$sessionName = "PHP" . $application . "Session";
session_name($sessionName);
session_start();
session_regenerate_id(TRUE);
/* erase data carried over from previous session */
$_SESSION=array();
$_SESSION['login'] = $_SERVER['REMOTE_USER'];
header("Location: " . $returnTo);
?>
該腳本,讓調用它的login.php必須是根據Apache2的模塊下,可以設置$ _SERVER [「REMOTE_USER」](我使用PyAuthenNTLM2)就像顯示在我的問題。
在ANA應用程序的每個網頁,然後必須首先檢查是否$ _SESSION [「登錄」]設置與否,如果沒有重定向到該登錄頁面:
if (!isset($_SESSION['login'])) {
$queryString = "returnTo=" . urlencode($_SERVER["REQUEST_URI"]) . "&applicationName=Application_1";
header ("location: " . $baseUrl . "login.php?" . $queryString);
exit(0);
}
謝謝你很多!我有一個類似的問題,你的想法解決了它! – Hikari 2013-03-02 00:12:44