在linux下结合CAS时候出现问题,安装好mysql php apache tomcat ssl环境之后
按照在PHPBB中加入CASClient 的代码配置了下
in function.phpAdd 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 = '';
}在In Auth.phpAdd 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);
In constants.phpAdd 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 server 的公共登录界面,输入用户名密码登录
看见url上已经出现获得了ticket,但是页面显示出错误如下:[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)完全弄不明白哪里出错了。忘高手帮我看看什么地方出现问题了。谢谢大家,这问题困扰我N久了。
按照在PHPBB中加入CASClient 的代码配置了下
in function.phpAdd 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 = '';
}在In Auth.phpAdd 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);
In constants.phpAdd 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 server 的公共登录界面,输入用户名密码登录
看见url上已经出现获得了ticket,但是页面显示出错误如下:[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)完全弄不明白哪里出错了。忘高手帮我看看什么地方出现问题了。谢谢大家,这问题困扰我N久了。
解决方案 »
- 我下载的flash多文件上传,怎么在linux上不能用啊
- 华讯财经招PHP技术(从事SNS社区插件开发 工作地点:深圳)
- 起个好听的论坛域名 谢谢^^
- 这个有可能解密吗?php的
- DW中无法导入MySQL数据库结构,每次导入时出现异常,导致Apache意外关闭!PHP+Dreamweaver+Apache+MySQL+WindowsXP
- 安装J_Space V2.0.5 程序进行到创建数据表时无下一点安装
- 关于php应用ssl证书的问题
- 在dedecms的后台编辑器里编辑htm文件 可视化模式下查看代码会丢失html顶部的dtd声明
- 问个if else 混编的问题
- PHP文本框获取到的值怎么在生成的页面中显示出来
- 雨林木风推操作系统叫板微软&散分
- zencart的购物车保存在哪里
phpCAS::forceAuthentication();
改为$auth = phpCAS::checkAuthentication();
if($auth){
$username = phpCAS::getUser();
}else{
phpCAS::forceAuthentication();
}