cakephp - 在用户模型 cakephp 中获取 $this->Auth->user ('id' )

标签 cakephp authentication

<分区>

我想要一个 changepassword 模块。我想从数据库中检查用户当前密码是否与用户输入的密码相同。我定义了一个 $validate 数组,如下所示。

`'old_password' => array(
                'minLength' => array(
                    'rule' => array('minLength', 1),
                    'message' => 'Current Password is  required'
                ),
                'oldPass' => array(
                    'rule' => array('oldPass',array('old_password')),
                    'message' => 'Current Password is  invalid'
                )
            ),`

并定义了一个方法来检查当前密码

`function oldPass($data){
        if(!empty($data['old_password'])) {
            $valid = false;
            $userData = $this->Auth->user(); // here I am getting error 
            $oldPass = Security::hash(Configure::read('Security.salt') . $data['old_password']);
            if ($userData['User']['password'] == $oldPass) {
                $valid = true;
            }
            return $valid;
        } else {
            return false;
        }

    }`

这是我得到的错误 未定义的属性:User::$Auth [APP\models\user.php,第 194 行] fatal error :在非对象上调用成员函数 user()

基本上都是我想把当前密码和用户输入的密码匹配

我正在使用 $this->User->validates() 进行验证。并获取错误消息我正在使用 $this->set('validationErrorsArray', $this->User->invalidFields());

请帮助我如何在模型中获取当前登录的用户 ID。

最佳答案

有一个干巴巴的做法:

$uid = CakeSession::read("Auth.User.id");

注意 这仅适用于 CakePHP 2.x - 仍然不应该这样做。 通常您将需要的 session 数据显式传递到模型层。

在 3.x 中你不能再静态访问 session ,你肯定需要将数据传递到模型层。

关于cakephp - 在用户模型 cakephp 中获取 $this->Auth->user ('id' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5761715/

相关文章:

authentication - Edge 浏览器中的 "Basic authentication"

php - CakePHP 如何将错误数据从模型传递回 Controller

Cakephp 数据验证 - 该字段不能留空

mysql - 蛋糕php : echo rows from an array

Mysql 子查询之间

apache - 使用 Nginx、Apache、Envoy 或其他反向代理将相互 TLS 转换为 OAuth 客户端凭证

javascript - Express.js Passport认证失败自动跳过策略

Android:从 servlet 获取响应

php - 协助从数据库中提取当前记录的用户 ID 和名字

php - 当用户在下拉列表中选择一个值时如何调用 Controller 功能?