登录不CakePHP中的某个工作(Login not working sometime in cak

2019-09-16 21:02发布

我在前台customers_contoller.php

function login() {
 if(!empty($this->data)) {
  # Call function from Customer to insert Registration Data
  $loginData = ClassRegistry::init('Customer')->checkLogin($this->data['email'], $this->data['password']);
  if(isset($loginData) && !empty($loginData)) {
     $this->Session->write('Session.userid',$loginData['Customer']['id']);
     $this->Session->write('Session.email',$loginData['Customer']['email']);
     $this->redirect(HTTP_PATH."my-profile");
     exit;
  } else {
     $this->Session->setFlash('Please enter valid Username/Password','default',array('class'=>'flash_bad'));
 $this->redirect(HTTP_PATH."customer/login");
 exit;
  }
 }
}

在模型customer.php,

function checkLogin($email,$password) {
 $loginData = $this->find('first', array('conditions' => array('Customer.email' => $email, 'Customer.password' => sha1($password), 'Customer.is_active' => 'Yes')));
 return $loginData;
}

大部分时间登录的工作正常,但有时登录不工作,也没有得到错误信息。 只有在登录每次刷新页面。

我刚才检查所有这事情,我发现,当我可以在我的网站,当时的浏览器缓存秀“/应用程序/” 会话路径不登录,但我已经在的before_filter()函数中使用app_controller.php实际设置会话路径$this->Session->path = '/';

我只是删除所有浏览器的缓存,并尝试进行登录,现在它工作正常。

谁能给我解释一下什么是问题? 它,所以我不能找到问题的根源是随机发生的。

Answer 1:

你的问题的原因可能是Session是因为传输到浏览器不当Cookie路径的丢失。 它可以是随机发生的,因为(通过GET参数或饼干等)的PHP的Session绑定策略混合。

你已经错误地设置了$this->Session->path parameter 。 它映射到session.cookie_path PHP的选项。 见颇为类似的例子这个职位。

session.cookie_path应排除协议,主机和最终端口,所以离开你的网站只是根'/'

$this->Session->path = '/';

又见描述域和路径的cookie的选项。

编辑 :为了进一步调查会话的错误配置,调试的原因SessionComponentCakeSession类近$base传递给构造函数的参数:

  • /cake/libs/controller/components/session.php
  • /cake/libs/cake_session.php

我想这在某种程度上传递错误,和您收到/app/浏览器Cookie路径。



Answer 2:

对于其他人可能有兴趣,我有一个新的用户的计算机上类似的问题。 原来,该机器无法与Internet时间同步正确,并且机器有日期设置为一天以后。 分别显示任何错误,但验证会话被破坏的重定向,我总是会被重定向到登录页面。 更新计算机上的时间和重新启动Chrome的帮助。 (奇怪的是,这不是在Firefox中的一个问题。)



文章来源: Login not working sometime in cakephp