Linux で PHPBB を CAS と組み合わせて構成すると、関連する問題が発生します。

WBOY
リリース: 2016-06-13 13:46:47
オリジナル
1114 人が閲覧しました

Linux で PHPBB を CAS と組み合わせて構成するときに問題が発生します。 。
mysql php apache tomcat ssl 環境をインストールした後、
function.php

PHP コードで CASClient を PHPBB に追加するコードに従って構成しました。

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
Add require($phpbb_root_path . 'includes/CAS.' . $phpEx);
Find (isset($_POST['login']))
Replace it with:
if(!$admin && CAS_ENABLE){ 
// initialize phpCAS 
phpCAS::client(CAS_VERSION_2_0, CAS_SERVER_HOSTNAME, CAS_SERVER_PORT, CAS_SERVER_APP_NAME); 
phpCAS::setNoCasServerValidation(); 
// force CAS authentication 
phpCAS::forceAuthentication(); 
} 
if (isset($_POST['login']) || (!$admin && CAS_ENABLE) )
Find $result = $auth->login($username, $password, $autologin, $viewonline, $admin);
Add the following code before it:
if(!$admin && CAS_ENABLE){ 
$username = phpCAS::getUser(); 
$password = ''; 
}


ログイン後にコピー

Auth.php 内

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
Add the following function:
function login_cas($username){ 
global $db; 
$sql = 'SELECT user_id, username, user_password, user_passchg, user_pass_convert, user_email, user_type, user_login_attempts FROM ' . USERS_TABLE 
. " WHERE username_clean = '" . $username . "'"; 
$result = $db->sql_query($sql); 
$row = $db->sql_fetchrow($result); 
$db->sql_freeresult($result); 

if (!$row) { 
return array( 
'status' => LOGIN_ERROR_USERNAME, 
'error_msg' => 'LOGIN_ERROR_USERNAME', 
'user_row' => array('user_id' => ANONYMOUS), 
); 
} 

if ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE) { 
return array( 
'status' => LOGIN_ERROR_ACTIVE, 
'error_msg' => 'ACTIVE_ERROR', 
'user_row' => $row, 
); 
} 

// Successful login... set user_login_attempts to zero... 
return array( 
'status' => LOGIN_SUCCESS, 
'error_msg' => false, 
'user_row' => $row, 
); 
}
Find $login = $method($username, $password);
Replace it with:
if(!$admin && CAS_ENABLE)    
$login = $this->login_cas($username);    
else    
$login = $method($username, $password);

ログイン後にコピー

constants.php 内

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
Add the following constant value:
define('CAS_ENABLE', true); 
define('CAS_SERVER_HOSTNAME', 'localhost'); 
define('CAS_SERVER_PORT', 8443); 
define('CAS_SERVER_APP_NAME', 'cas');

ログイン後にコピー
phpBB3 フォーラムで [ログイン] をクリックして、CAS サーバーのパブリック ログイン インターフェイスに移動し、ユーザー名とパスワードを入力してログインします
URL でチケットが取得されていることがわかりますが、ページは次のエラーが表示されます:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
[phpBB Debug] PHP Notice: in file /includes/CAS/client.php on line 529: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session
CAS Authentication failed!

You were not authenticated.

You may submit your request again by clicking here.

If the problem persists, you may contact the administrator of this site.
phpCAS ${phpcas.version} using server https://localhost:8443/cas/ (CAS 2.0)

ログイン後にコピー
何が問題だったのかわかりません。問題がどこにあるのかを理解するのを手伝っていただけますか。皆さん、ありがとうございます。この問題は私を長い間悩ませてきました。


-----解決策--------- ジャッキアップして待ってて

------解決策------------------ ヘルプ。勉強。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート