0

我正在开发我的第一个带有 CakePHP 2.3 的应用程序,我遇到了可以登录的问题(没有身份验证错误),但是我的会话没有留下来,所以当我被发送回登录页面Auth->redirect()时叫。我确定我只是缺少一个设置或配置了一些稍微错误的东西,但我找不到它。

# core.php
# session record is written the the database, but the same record's id changes w/ every request
Configure::write('Session', array(
  'defaults' => 'database',
));

Configure::write('Security.level', 'medium');

我试过调整各种Session.X参数,但没有任何区别。我在我的以下设置中使用 bcrypt 身份验证AppController

'Auth' => array(
  'authenticate' => array(
    'Blowfish' => array(
      'fields' => array( 'username' => 'email' ),
      'scope'  => array( 'active' => '1' )
    ),
  ),
  'authorize' => array( 'Controller' ),
  'loginAction'    => array( 'admin' => false, 'controller' => 'users', 'action' => 'login' ),
  'loginRedirect'  => array( 'admin' => true, 'controller' => 'activities', 'action' => 'index' ),
  'logoutRedirect' => array( 'admin' => false, 'controller' => 'users', 'action' => 'login' ),
),

我错过了什么?

更新

意识到这只发生在我的开发环境中,我比较了我的 Cake 配置(数据库、核心、引导程序)和 php.ini 值——没有差异。我难住了。

4

2 回答 2

2

神圣的头,蝙蝠侠。

所以这就是问题所在。我将会话存储在数据库中。在某个地方,不知何故,一个(显然)自动化过程将cake_sessions.data字段更改为cake_sessions.DATA. 尽管我在调试时查看了数据库一千次,但我只是注意到了这种差异。

问题解决了。

故事的寓意:开发人员,不要让您的数据库字段名称长大并改变大小写。

于 2013-06-11T15:57:08.030 回答
1

您还需要将“会话”设置为组件。

于 2013-06-08T04:59:46.750 回答