在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久了。
解决方案 »
- 我很想知道PEAR用在什么地方
- 【项目需求】 广州的phper有兴趣接项目的请看。
- 使用symfony的童鞋报个道吧。大家对这个框架感觉怎么样?
- PHP多线程问题,求大家帮帮忙。。。
- Discuz! X2 帮助文档
- smarty已经缓存了文件内容还用得上eAccelerator
- 想学thinkphp,jquery,jqueryui,ajax的来这里
- iframe弹出页面, 所有session丢失
- 怎么样得到word页数,在hex十六进制出现了问题,怎么得到页数,怎么解压16进制
- PHP文本框获取到的值怎么在生成的页面中显示出来
- 雨林木风推操作系统叫板微软&散分
- zencart的购物车保存在哪里
phpCAS::forceAuthentication();
改为$auth = phpCAS::checkAuthentication();
if($auth){
$username = phpCAS::getUser();
}else{
phpCAS::forceAuthentication();
}