我对 phpcas 身份验证有疑问。
我使用带有路由器的应用程序框架。
我使用 .htaccess 以框架预期的正确格式重写 URL。
我的问题如下,当我直接在索引页面(https:\\ {服务器名称} \ site_name)上连接到我的应用程序时,phpCAS身份验证效果很好。另一方面,如果我尝试直接在我的站点页面上进行身份验证(https:\\ {服务器名称} \ site_name \ page \ action \ id),我有登录门户出现但无法显示该页面和我缺少告诉我“页面未正确重定向”的信息。
我希望您能帮助理解为什么通过连接主页身份验证工作得很好,但在网站的另一个页面上却不行?
这是我的 .htaccess
# Rewrite URL
Options +FollowSymlinks
RewriteEngine on
# Rewrite base
RewriteBase /operationregistration/
# Force the use of https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# Changes from index.php?page=X&action=Y&id=Z to X/Y/Z
RewriteRule ^([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?\?ticket=([a-zA-Z0-9\-]*)+/?$ index.php?page=$1&action=$2&id=$3&ticket=$4 [NC,L]
RewriteRule ^([a-zA-Z]+)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ index.php?page=$1&action=$2&id=$3 [NC,L]
这是我的班级 caslogin.php
class CASLogin
{
/**
* CASLogin constructor.
*/
public function __construct()
{
phpCAS::setDebug('logs');
phpCAS::setVerbose(true);
phpCAS::client(CAS_VERSION_2_0, Config::get("cas_server_url") , intval(Config::get("cas_server_port")), Config::get("cas_server_uri"));
phpCAS::setNoCasServerValidation();
}
/**
* Perform a CAS login
*/
public function login() {
// Save the current page
$_SESSION["url_to_redirect"] = $this->getCurrentPageURL();
//phpCAS::setServerServiceValidateURL($this->getCurrentPageURL());
// Force the authentication
phpCAS::forceAuthentication();
$permission_manager = new PermissionManager(true);
// If the redirection URL is still present
if (isset($_SESSION["url_to_redirect"]) && !empty($_SESSION["url_to_redirect"])) {
// Redirect to the url_to_redirect
header('Location: ' . $_SESSION["url_to_redirect"]);
// Unset the session variable
unset($_SESSION['url_to_redirect']);
exit();
}
}
/**
* Perform a CAS logout
*/
public function logout() {
session_destroy();
session_unset();
phpCAS::logout();
}
/**
* Return the current Page URL
* @return string
*/
private function getCurrentPageURL() {
return "https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
}