authentication - CakePHP 2,如何使用纯文本密码进行 AuthComponent::login() ?

标签 authentication cakephp-2.0

我想在现有数据库上使用纯文本密码字段实现 CakePHP 2 网站。

这是我的应用程序 Controller

class AppController extends Controller {
  public $components = array(
    'Session',
    'Auth' => array(
      'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
      'logoutRedirect' => array('controller' => 'users', 'action' => 'home'),
      'authError' => 'You cannot view this page',
      'authorize' => array('Controller'),
      'authenticate' => array(
        'Form' => array(
          'userModel' => 'User',
          'fields' => array('username' => 'user_id', 'password' => 'user_password')
        )
      )
    )
  ); 

  public function isAuthorized($user) {
    return true;
  }

  function beforeFilter() {
    $this->Auth->allow('home');
    //$this->Auth->authenticate = $this->User;

    parent::beforeFilter();
  } 

这是我的用户 Controller 。

class UsersController extends AppController {
  public $paginate = array(
    'fields' => array('user_id', 'user_desc', 'user_password'),
    'limit' => 25,
    'order' => array(
      'user_id' => 'asc'
    )
  );

  function login() {
    if ($this->request->is('post')) {
      if ($this->Auth->login()) {
        $this->redirect($this->Auth->redirect());
      } else {
        $this->Session->setFlash('Cannot Login');  
      }
    }
  }
}

这是我的用户模型

class User extends AppModel {
  public $name = 'User';
  public $primaryKey = 'user_id';
  public $belongsTo = 'Group'; 
}

根据上面的文件,当我按下login.ctp上的登录按钮时,我看到了

select * from users where user_password = 'this_is_hashing_password'

在sql转储部分。

那么,如何关闭自动哈希算法,以便登录()将用户输入与数据库存储的纯文本密码进行比较???

我尝试了大量阅读 CakePHP 书籍,但找不到任何内容,而且使用从互联网上找到的 hashPasswords($data) 技术也不起作用。

请帮忙。 孔塔普。

最佳答案

最好的答案实际上是批量处理您存储的密码,以便对它们进行哈希处理,但是在某些情况下,您可能会将 Cake 应用程序添加到现有应用程序中,该应用程序会以不同的方式对密码进行哈希处理(例如通过根本不散列它们),因此即使本例中的目标不是,问题也是有效的。

根据您的 Cake 版本,尝试使用这些资源来修改 Cake 的密码哈希函数:

关于authentication - CakePHP 2,如何使用纯文本密码进行 AuthComponent::login() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11921623/

相关文章:

cakephp - 如何测试是否在模型方法中调度事件

cakephp - 找不到助手类 sessionHelper

php - 同时登录两个 wordpress 博客

azure - 访问/.auth/refresh权限错误

php - 在 cakePHP 中 json 序列化后回显一些内容

php - CakePHP:如何将一行插入到连接表中

php - 为什么我不能用 PHP 5.2 处理 CakePHP 2.x 中的 fatal error ?

authentication - openid.claimed_id 是静态的吗?

c# - Mvc,授权退回授权用户

mysql - 使用JSP私有(private)登录向MYSQL数据库添加信息