6

我在注册期间使用 SSL 5 页

https://www.example.com/step1
https://www.example.com/step2
https://www.example.com/step3 - 认证组件登录
https://www.example.com/step4
https: //www.example.com/step5

在第 3 步之后,我正在使用 Auth 组件创建用户会话,该组件通过 Auth 组件自动登录用户。但是,在第 5 步之后,它将重定向到http://www.example.com/welcome

我正在使用 SSL 组件非强制方法将HTTPS更改为HTTP。一切正常,但问题是,一旦我从第 5 步(HTTPS)到达欢迎页面,我的身份验证组件会话就会过期。我试图调试它,但找不到任何解决方案。请注意,如果没有 HTTPS,所有步骤和会话都可以正常工作。

4

2 回答 2

3

AppController 类中的代码:

function beforeFilter() {
parent::beforeFilter();
$this->_setupSecurity();}

function _setupSecurity() {
$this->Security->blackHoleCallback = '_badRequest';
if(Configure::read('forceSSL')) {
    $this->Security->requireSecure('*');    }

}

/** * 主要的 SecurityComponent 回调。* 处理丢失的 SSL 问题和一般的错误请求。*/

function _badRequest() {
if(Configure::read('forceSSL') && !$this->RequestHandler->isSSL()) {
    $this->_forceSSL();
} else {
    $this->cakeError('error400');
}
exit;}

/** * 重定向到同一页面,但使用 https 协议并退出。*/

function _forceSSL() {
$this->redirect('https://' . env('SERVER_NAME') . $this->here);
exit;

}

按照这个链接:也许你得到你的解决方案..

https://stackoverflow.com/a/4473178/983624

于 2012-08-22T07:17:53.777 回答
3

如果您使用的是 Cakephp 2.0,请转到以下文件夹

库/蛋糕/模型/数据源/

打开 CakeSession.php 文件并搜索以下行

if (!isset($sessionConfig['ini']['session.cookie_secure']) && env('HTTPS'))
{
        $sessionConfig['ini']['session.cookie_secure'] = 1; // Just comment this line and try it will works
}
于 2012-08-22T07:19:29.080 回答