为什么 CakePHP 身份验证组件不散列我的密码?

2024-01-06

我在用着CakePHP http://en.wikipedia.org/wiki/CakePHP1.2 具有 Auth 和 ACL 组件。

在我的用户注册操作中,密码未经过哈希处理。具体来说,这个表达式:

if ($this->data['User']['password'] !=
    $this->Auth->password($this->data['User']['confirm_password']))

即使我提交相同的值,这也会被评估为 truepassword and confirm_password。我知道密码未经过哈希处理,因为当我删除对Auth->password,表达式的计算结果为 false。

我希望 Auth 模块能够自动对密码进行哈希处理。我究竟做错了什么?

这是我的观点:

<?php
    echo $form->create('User', array('action' => 'register'));

    echo $form->input('email',
                      array('after' => $form->error(
                        'email_unique', 'This email is already registered.')));
    echo $form->input('password');
    echo $form->input('confirm_password', array('type' => 'password'));
    echo $form->end('Register');
?>

这是我在用户控制器中的注册操作:

function register(){
    if ($this->data) {
        if ($this->data['User']['password'] !=
            $this->Auth->password($this->data['User']['confirm_password'])) {

            $this->Session->setFlash(__('Password and Confirm Password must match.', true));
            $this->data['User']['password'] = '';
            $this->data['User']['confirm_password'] = '';
        }
        else{
            $this->User->create();
            if ($this->User->save($this->data)){
                $this->redirect(array('action' => 'index'), null, true);
            }
            else {
                $this->data['User']['password'] = '';
                $this->data['User']['confirm_password'] = '';
                $this->Session->setFlash(__('Some problem saving your information.', true));
            }
        }
    }
}

这是我的appController我在其中包括Auth and Acl模块:

class AppController extends Controller {
    var $components = array('Acl', 'Auth');

    function beforeFilter(){
        if (isset($this->Auth)) {
            $this->Auth->allow('display');
            $this->Auth->fields =
              array(
                'username' => 'email',
                'password' => 'password');
            $this->Auth->authorize = 'actions';
        }
    }
}

我究竟做错了什么?


CakePHP 不会对密码进行哈希处理,除非用户名包含提交的值。我正在用电子邮件替换用户名字段。但是,我通过设置 Auth->fields 数组重新映射了这些字段。但是,我是在 appController 而不是 userController 中执行此操作。所以移动这一行:

$this->Auth->fields = array('username' => 'email', 'password' => 'password');

从 appController 进入 userController 解决了它。
现在问题变成了“为什么我不能重置 appController 中的 Auth-> 字段?”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 CakePHP 身份验证组件不散列我的密码? 的相关文章

  • C++ 相当于 PHP 的 pack()

    我的问题很简单 有没有类似 PHP 的pack and unpack C STL 中的函数 如果没有 是否有其他方法可以实现相同的目标 https www php net pack https www php net pack Thanks
  • PHP 换行符 (\n) 不起作用

    由于某种原因我无法使用 n使用 PHP 输出到文件时创建换行符 上面只写着 n 到文件 我尝试使用 n 同样 它只写 n 如预期 但我一生都无法弄清楚为什么在字符串中添加 n 不会创建新行 我也尝试过 r n但它只是附加 r n 到文件中的
  • 客户端和服务器端编程有什么区别?

    我有这个代码 为什么这不会将 bar 写入我的文本文件 而是警告 42 注意 这个问题的早期修订明确涉及服务器上的 PHP 和客户端上的 JavaScript 问题的本质和解决方案是相同的any当一种语言在客户端上运行而另一种语言在服务器上
  • 如何在 Laravel 5 中对合并集合进行分页?

    我正在创建一个包含两种类型的对象的流 BluePerson 和 RedPerson 为了创建流 我获取所有这两个对象 然后将它们合并到一个集合中 这样做之后 我需要对它们进行分页 但是分页似乎是针对雄辩的模型和数据库查询 而不是集合 我见过
  • 将扩展配置文件实体添加到 FOS UserBundle

    我正在尝试扩展 FOS UserBundle 以允许扩展配置文件实体除了基本 UserBundle 字段之外还保存其他信息 因为我的网站上有多种类型的用户 所以我创建了单独的实体来保存个人资料信息 我的实体设置如下 class UserPr
  • 重定向而不是 404 错误页面 - 状态代码不起作用 (Nginx)

    我目前正在迁移到 nginx 服务器 我尝试将其放入名为的 404 ErrorDocument 中404 php 如果我现在尝试访问http mydomain com 404 php 这按预期工作 它将我重定向到 Google 但是一旦我尝
  • 在 PHP 中拆分 XML

    我有一个带有根元素和多个项目子元素的合并 xml 像这样的东西
  • 从目录中读取所有文件内容 - php

    这实际上是一个简单的任务 我想显示指定文件夹中所有文件的内容 我正在传递目录名称 echo a href row qname a 在第二页上 我正在迭代目录内容 while entryname readdir myDirectory if
  • 正确的标头 php mysql blob 显示图像

    我正在尝试在我的 PHP 页面中显示来自 mysql blob 的图像 我知道这不是最佳实践 然后我会将其引入我的 iOS 应用程序中 我在设置页面标题时遇到问题 我认为需要将其设置为图像 所以 这显示了图像 但我不相信页眉是正确的 hea
  • 使用 DateTime 类计算日期差异时出错

    我正在尝试使用 DateTime 类 php gt 5 3 来计算 2 个日期的差异 手册中的示例简单明了 我尝试了该示例并且效果很好 但如果改变开始和结束日期 就会出现问题 this gt start date 2011 03 01 th
  • Opencart 的 $this->config->get('module_var_name')

    我正在尝试自定义 Opencart 支付模块 我看到很多地方都使用了配置信息 但我找不到任何创建正在使用的变量的内容 我知道在管理页面中 如果我选择 paypal 标准 我可以设置所有 配置 信息 但我找不到强调它的 模型 是否有模型 我希
  • 让用户渲染自己的 SVG 文件的安全隐患

    我计划让网站用户上传他们自己的 SVG 文档并使用inkscape or svg2pdf 用户要么未经身份验证 要么经历一个简单的注册过程 所以我预计会有一些黑客尝试 我可以采取哪些过滤措施来最大程度地减少安全威胁 Inkscape 似乎并
  • 无法显示由 Fine-uploader 上传到 Amazon s3 的图像

    我现在尝试设置fineuploader s3以显示在aws服务器上成功上传的文件的图像 如示例页面上所做的那样 http fineuploader com s3 demo http fineuploader com s3 demo 我 仍然
  • Laravel 类邮件程序不存在

    我将应用程序从 5 更新到 5 2 现在 当我调用 Mail send 时 它会返回一个异常 Class mailer 不存在 Mail send emails mail data gt content function m use to
  • PHP 负面因素不断增加

    我这里有这个代码 remaining 0 foreach clientArrayInvoice as key gt row remaining remaining row total 它的作用是 它获取总计值并将它们相加 但是当我有负值时
  • Heredoc:常用的“EOT”实际上是什么意思?

    PHP s 定界例子 http www php net manual en language types string php language types string syntax heredoc似乎总是使用 EOT 有时是 EOD 作
  • PHP 中的坏词过滤器?

    我正在用 PHP 编写一个坏词过滤器 我在数组中有一个坏词列表 方法 clean text 的写法如下 public static function cleanse text originalstring if self is sorted
  • MySQL 正在将我的时间戳值转换为 0000-00-00

    我是 PHP 新手 目前仍在学习中 我认为我的注册表有问题 username password email全部成功插入MySQL registered and last seen不要 我以为我正在使用getTimestamp 错了 但它呼应
  • 在 PHP 命令行上显示完整的堆栈跟踪

    Problem 我的 PHP 堆栈跟踪缩写为 Stack trace 0 www html table app create php 128 SoapClient gt call call Array 1 www html table ap
  • MYSQL 按喜欢/不喜欢和受欢迎程度排序

    我有评论表 其中包括喜欢和不喜欢的内容 现在我在正确的顺序上遇到了问题 实际上 我的系统在顶部显示了最多点赞的评论 我正在 youtube 上寻找类似系统的东西 这意味着 100like 100dislikes 的评论的顺序高于 1 1 我

随机推荐

  • 在运行时启用和禁用 gprof?

    我想知道里面有没有APIgprof通过受监控的应用程序在运行时启用和禁用分析 我有兴趣禁用对代码某些部分的分析 并使其能够专注于我感兴趣的部分 我的意思是 有没有办法避免这样做 int main void disable gprof uni
  • 从图像中删除颜色

    我想从下图中删除颜色 由于这种颜色 我无法从图像中清晰地提取文本 我正在使用下面的代码 但我没有得到明确的文本 import numpy as np from PIL import Image im Image open my file t
  • 如何在Linux中用户登录认证后运行脚本

    我有一个脚本 我想在用户登录身份验证后运行 为了实现这一点 我将脚本名称添加到 etc rc5 d S rc local文件 但后来我知道 rc local 文件中添加的任何内容都会在系统启动时执行 而不是在登录身份验证之后执行 谁能告诉我
  • 错误:没有名为“PyQt5.QtMultimedia”的模块

    我正在尝试构建一个集成视频的 GUI 为此我需要导入 PyQt5 QtMultimedia 然而 当尝试导入模块 导入 PyQt5 QtMultimedia 时 我收到错误 ModuleNotFoundError 没有名为 PyQt5 Qt
  • 使用 node.js 运行 shell 脚本(childProcess)

    我想在我的 node js 服务器上运行 shell 脚本 但什么也没发生 childProcess exec play sh media external req params movie function not working 另一个
  • 查找给定查询的 firestore 文档的索引

    我正在使用 Firestore 构建游戏 我想显示高分列表 我目前通过以下查询获得了 10 个最高分 const q query doc db scores title orderBy score desc limit 10 除此之外 我想
  • 如何在Excel中使用单选按钮创建过滤搜索框[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想创建一个搜索文本框来过滤 Excel 中的数据 我有 3 列数据 汽车品牌 型号和颜色是列 我有单选按钮 选择该按钮后我希望搜
  • 将秘密(密码)存储在单独的文件中

    存储 Python 脚本的应用程序机密 密码 访问令牌 的最简单方法是什么 我以为这会是一个 yml文件就像在 Ruby 中一样 但令人惊讶的是我发现事实并非如此 那么到底是什么呢 最简单的解决方案是什么 我想把它们放在一个separate
  • 在 macOS 上通过 psql 创建 PostgreSQL 数据库备份

    我正在尝试创建一个 PostgreSQLlocal使用 macOS 上的终端进行数据库转储psql 我的下一步是将整个数据库上传 导入到我的 Amazon RDS PostgreSQL 数据库实例 https docs aws amazon
  • 将 Hudson 作业移至另一台服务器

    我已经设置了一个持续集成构建 Hudson 在 Tomcat 上运行 我现在需要将其移动到 Tomcat 的另一个实例 但不想从头开始配置所有内容 是否有一个配置文件定义了我可以复制到新服务器的每个作业 或者可以通过用户界面导入 导出作业
  • 使用变量的“原型”

    大多数时候 主要是教程 我看到 原型 用于方法 我很确定它也可以用于变量 也许对于设置 默认值 最有用 它不经常用于函数有什么原因吗 这是不好的做法 还是存在明显的性能差异 在我的脑海中 你失去了功能hasOwnProperty http
  • Networkx read_gml 错误“networkx.exception.NetworkXError:无法在 (3, 1) 处标记 u'graph'”

    我正在尝试使用 networkx 读取 gml 文件 非常简单 对吧 除非每当我尝试读取文件时 我都会收到错误 networkx exception NetworkXError 无法标记 u graph at 3 1 我对gml或netwo
  • 转换为位图时,CardView 阴影未渲染

    问题 我尝试保存一个视图组 其中有一个CardView作为其子级之一 作为 PNG 文件 为了达成这个 我膨胀视图组并使用所需信息填充视图 通过以下方式将图像加载到图像视图Glide https github com bumptech gl
  • 在 SpriteKit 中呈现一个场景而不丢弃之前的场景?

    我的情况是我有一个GameMenuScene在用户选择级别后 我想呈现LevelScene 但我不想再有以前的了GameMenuScene被丢弃是因为LevelScene实际上是一个 property of GameMenuScene用户是
  • 为什么从 spring-data-jpa 保存返回的实体中未设置 ID

    我有一个简单的实体 我正在使用 spring data jpa 版本 1 2 0 RELEASE 和 eclipselink 2 4 1 Entity Table name platform public class Platform Id
  • 如何在symfony2中覆盖奏鸣曲管理包的CSS

    我想覆盖一个css文件 即驻留在sonata管理包项目的sonata project admin bundle Sonata AdminBundle Resources public bootstrap css路径中 请帮帮我 一种可以覆盖
  • 如果记录存在否则插入如何更新sqlite表?

    这可能是重复的问题 但我很困惑 因为我是 sql 的新手 android 正在从服务器获取响应 如果表中的值已存在 则需要将其保存在 sqlite 数据库中更新 否则插入 il 检查任务 id 这是唯一的不知道如何为了做到这一点 我已经搜索
  • Dotnet 发布未将 DLL 发布到发布目录

    我想发布我的自包含 NET Core 2 2 应用程序 但是一个特定的 NuGet 包 Microsoft Management Infrastructure 从未发布到publish文件夹 因为 dll 文件不存在 我正在使用命令dotn
  • Android 从数据库获取数据

    我有一个可以从数据库检索用户数据的页面 但经过一整天的尝试 我只能获取表列名称 但无法获取其中的值 这是我创建数据库的代码 public static final String LASTLOGIN lastuser public stati
  • 为什么 CakePHP 身份验证组件不散列我的密码?

    我在用着CakePHP http en wikipedia org wiki CakePHP1 2 具有 Auth 和 ACL 组件 在我的用户注册操作中 密码未经过哈希处理 具体来说 这个表达式 if this gt data User