当前位置: 首页 > 知识库问答 >
问题:

在Kohana Auth中强制使用强密码

袁亦
2023-03-14

我试图使用Auth在我的Kohana应用程序中强制使用强(er)密码,方法是使用以下正则表达式要求至少一个大写字母、一个小写字母、一个数字、一个非字母数字(特殊字符)和至少8个字符。

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$

正则表达式正在工作,正如在Rubular上可以看到的那样。这是我在Kohana的Model\u Auth\u User中使用的代码,它扩展了ORM。

public function rules() {
    return array(
        'password' => array(
            array('not_empty'),
            array('min_length', array(':value', 8)),
            array('regex', array(':value', '/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$/'))
        )
    );
}

但是,当创建一个新的用户帐户或更改现有帐户的密码时,这个正则表达式似乎被完全忽略了。不过,上面一行中的min_length工作正常!

它将阻止我使用test作为密码,因为它少于8个字符,但testing123不会给出任何类型的错误消息。

你知道为什么会发生这种情况,以及解决方法吗?

共有1个答案

史昀
2023-03-14

解决了这个问题-您必须将正则表达式添加到get\u password\u validation函数(在同一个模型中),否则它不会输出任何错误消息。

public static function get_password_validation($values) {
    return Validation::factory($values)
        ->rule('password', 'min_length', array(':value', 8))
        ->rule('password', 'regex', array(':value', '/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$/'))
        ->rule('password_confirm', 'matches', array(':validation', ':field', 'password'));
}

如果添加,则需要删除规则()函数中的正则表达式,否则无法登录,因为它对不包含任何特殊字符的散列字符串运行正则表达式检查。

希望这能帮助到某人。

 类似资料:
  • 问题内容: 我在一次采访中遇到了这个问题,不知道如何回答: 有一个表在列上有一个索引,您可以查询: 该查询花费的时间太长,您发现该索引没有被使用。如果您认为使用索引将使查询的性能更好,那么如何强制查询使用索引呢? 问题答案: 您可以使用优化程序提示 等等… 有关使用优化程序提示的更多信息:http : //download.oracle.com/docs/cd/B19306_01/server.1

  • 我看到这篇文章给出了使用WebClient将文件上传到ftp的简单想法。这很简单,但如何强制它使用SSL?

  • 我们公司有一个项目,其中我们使用库SSH.NET(2016.1.0)连接到远程服务器。我们做的连接很简单,有下面的代码: 然后我们执行诸如查找文件、下载和上传的操作。 今天,我们收到了一封电子邮件,来自我们连接的服务器人员告诉我们,他们将停止弱密码,我恐怕这是一个领域,我没有经验。 根据他们的沟通,他们的新SSH(SFTP)标准将是: null null null 我在网站上查看了SSH.NET的

  • 问题内容: 我正在尝试为Express.js创建一个中间件,以将所有非安全(端口80)通信重定向到安全SSL端口(443)。不幸的是,Express.js请求中没有任何信息可让您确定该请求是否来自http或https。 一种解决方案是重定向 每个 请求,但这不是我的选择。 笔记: 没有可能用Apache或其他东西来处理它。它 必须 在节点中完成。 应用程序中只能启动 一台 服务器。 您将如何解决?

  • 问题内容: 我刚在德国Windows计算机上安装了JDK7,我注意到的第一件事是,与JDK6不同,它在操作系统和某些消息(例如,来自工具的帮助消息而不是来自编译器的错误消息)之后是德语的。我如何强迫它到处使用英语?AFAIK安装程序不是特定于语言的,并且安装过程中的所有消息均为英文。 问题答案: 你是说javac?尝试设置参数。参见这篇文章:通过ant将“-J-Duser.language”传递到

  • 问题内容: 我们正在与第三方进行集成,该第三方发送的XML的Content-Type标头为text / html。我们正计划使用Spring的RestTemplate将其映射到我们从xsds生成的类,但是RestTemplate无法找到合适的转换器用于内容。第三方拒绝修复内容类型,因为它可能破坏其他伙伴的集成。 Spring的RestTemplate是否有办法强制其使用特定的转换器?我们基本上只是