CakePHP:提交失败时清除密码字段

2023-12-25

问候,

我正在设置一个带有密码字段的非常标准的注册表单。

问题是,提交失败后(由于字段为空、格式不正确等),控制器会重新加载注册页面,但密码字段包含先前输入的密码的哈希值。每次提交失败后如何将其清空?

View:

echo $form->password('Vendor.password', array('class' => 'text-input'));

控制器:

Security::setHash('sha1');
$this->Auth->sessionKey = 'Member'; 
$this->Auth->fields = array(
    'username' => 'email',
    'password' => 'password'
);

非常感谢您的帮助,谢谢!


您可能会在 cakePHP 密码验证过程中遇到另一个问题。

问题是 cake 首先对密码进行哈希处理,then进行验证,这可能会导致输入失败,即使根据您的规则它是有效的。这就是为什么密码以散列形式返回到输入字段而不是正常形式的原因。


要解决此问题,请使用不同的名称(例如“tmp_pass”),而不是使用特殊字段名称“password”。这样,cakePHP Auth 就不会自动对字段进行哈希处理。

这是一个示例表格

echo $form->create('Vendor', array('action' => 'register'));
echo $form->input('email');
echo $form->input( 'tmp_pass', array( 'label' => 'Password','type'=>'password' ));
echo $form->end('Register');

例如,在您的供应商模型中,不要将验证规则分配给“password”,而是将这些规则分配给“tmp_pass”

var $validate = array('email' => 'email', 'password' => ... password rules... );

becomes

var $validate = array('email' => 'email', 'tmp_pass' => ... password rules... );

最后,在您的 Vendor 模型中,实现 beforeSave()。

首先,查看数据是否有效(“tmp_pass”将根据您的规则进行验证)。

如果成功,手动散列 tmp_pass 并将其放入 $this->data['Vendor']['password'] 然后返回 true。如果不成功,则返回 false。

function beforeSave() {
    if($this->validates()){
        $this->data['Vendor']['password'] = sha1(Configure::read('Security.salt') . $this->data['User']['tmp_pass']);
        return true;
    }
    else
        return false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CakePHP:提交失败时清除密码字段 的相关文章

随机推荐

  • MinGW 中的静态链接库

    假设我有三个 C 源文件 前两个是 LIB lib a 第三个是使用它们的应用程序 第一个是 re c int re int i return i 第二个是 test c int re int Depends on re c int tes
  • 使用相同端口(80)运行多个 java jetty 实例

    例如 我有一个主要临时域 www product com 对于每个客户端 我需要将单独的子域映射到具有相同端口 80 但具有不同实例名称 不同 wars文件 的同一服务器 www client1 product com www client
  • 混淆的效果如何?

    另一个问题 即最佳 NET 混淆工具 策略 https stackoverflow com questions 2525 best net obfuscation tools strategy 询问混淆是否容易使用工具实现 但我的问题是 混
  • mybatis动态sql里面注解

    我使用的是mybatis 3 我正在使用 select 注释在映射器接口内编写选择查询 Example Select select from EMPLOYEE where ID gt 55 public List
  • 为什么使用 zone() 时 momentjs isDST() 返回错误的时间

    我正在尝试检查 isDST 如果夏令时处于活动状态 则返回 true 或 false 如果我使用当前日期时间 它工作正常 例如 var isdst moment isDST 对于我的时区返回 true 但是 我想要做的是首先设置时区偏移量
  • 如何对元组列表进行分组?

    Note 我当然知道如何在显式 for 循环中做到这一点 但我正在寻找一个更具可读性的解决方案 如果可能的话 我想通过使用一些内置功能来解决这个问题 最好的情况是这样的 result groupby logic 假设有以下列表 import
  • 您是否应该更喜欢重载而不是函数模板的专门化?

    我的一本教科书指出 您可以为标准库函数提供自己的实现 例如swap x y 通过模板专门化或函数重载 这对于任何可以从赋值交换以外的东西中受益的类型都很有用 例如 STL 容器 我知道 它已经编写了交换 我的问题如下 更好的是 模板专业化为
  • 向正在等待 TCP 的线程发送指令?

    我试图理解 TCP 中的多线程 所以我正在编写一个基本的 telnet 文本 路由器 using ReadLine 每个使用 TCP 侦听器的线程将等待来自 telnet 客户端的输入 然后根据发送的文本进行响应 我将其与多个线程和多个 t
  • 尝试让 CUDA 7.5 与 GCC 5.x 一起工作

    因此 如果您在系统 GCC 版本为 5 及更高版本时尝试使用 nvcc 则会收到 版本不受支持 错误 但是 我听说人们报告说他们刚刚对此进行了评论 并且 CUDA 7 5 与 GCC 5 x 一起 为他们工作 然而 当我做同样的事情时 支票
  • 如何改变android中数组元素的颜色? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我只是想知道 我们可以更改特定数组索引的颜色吗 我有一个以下数组 String all 1 2 3 4 5 6 7 8 9 10 所以 我想
  • 使用大的静态变量是一个坏主意吗?

    我使用 ASP NET MVC 4 我想加载大量数据并使其在我的所有类中都可以访问 这是我的代码的简约示例 public class MyController Controller public static List
  • 数据库中的重复条目

    我有一个巨大的产品表 但有很多重复的条目 该表有超过 10000 个条目 我想删除其中的重复条目 而不需要手动查找并删除它 如果您能为我提供解决方案 请告诉我 你可以使用SELECT DISTINCT INTO TempTable 删除原始
  • 创建图像而不将其存储为本地文件

    这是我的情况 我想从用户上传的图像创建一个调整大小的 jpeg 图像 然后将其发送到 S3 进行存储 但我希望避免将调整大小的 jpeg 写入磁盘 然后为 S3 请求重新加载它 有没有办法完全在内存中完成此操作 并将图像数据 JPEG 格式
  • 将光标设置到 contenteditable div 的末尾

    如果当前标签为空 我试图将光标设置到下一个 上一个 contenteditable 标签的末尾 但是当我设置焦点时 它将焦点添加到文本的开头而不是结尾 尝试了几乎所有的解决方案 但似乎没有一个对我有用 这是我正在尝试的简单代码 HTML代码
  • 在android中查询“dumpsys meminfo”

    当我在 android 4 2 上运行 adb shell dumpsys meminfo 时 我得到的结果如下 Shared Private Heap Heap Heap Pss Dirty Dirty Size Alloc Free N
  • 如何使用 Selenium IDE 上传文件?

    这在过去是有效的 但最近我一直在尝试使用 Selenium IDE 上传文件 现在我收到此错误 错误 意外异常 代码 gt 1000 INDEX SIZE ERR gt 1 DOMSTRING SIZE ERR gt 2 HIERARCHY
  • 在 MVC 5 中使用 ModelClientValidationRule 抛出错误?

    我尝试在 MVC 5 项目中进行自定义客户端验证 当我添加以下代码时 public IEnumerable
  • 在一个txt文件中搜索多个字符串

    我确实知道对此还有多个其他答案 但它们不适合我的代码 因为我的代码每次搜索必须处理 1000 行以上 我想组合 2 个输入的字符串 以便 PHP 脚本在 txt 文件中搜索这两个字符串 并在输出时组合它们 这是我尝试过的 search GE
  • 为什么当我从网络浏览器打开它并在Java中读取它时,html源代码是不同的? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个关于解析在线 html 页面
  • CakePHP:提交失败时清除密码字段

    问候 我正在设置一个带有密码字段的非常标准的注册表单 问题是 提交失败后 由于字段为空 格式不正确等 控制器会重新加载注册页面 但密码字段包含先前输入的密码的哈希值 每次提交失败后如何将其清空 View echo form gt passw