【问题标题】:PasswordField validation in SilverStripeSilverStripe 中的 PasswordField 验证
【发布时间】:2015-07-30 19:26:37
【问题描述】:

我的项目中有一个名为 Customer 的成员。我需要验证 PasswordField。

我在我的页面中创建了一个包含 PasswordField 的函数,如下所示

function getValidator() {

    $data = $this->loadData();              

    if (@$data['Password']->minLength(7)) {
        return $this->validationError('Password', 'Password field should contain minimum 7 charactors', 'bad');         
    }   
}

这不会给出任何结果。我如何让它工作?

【问题讨论】:

    标签: validation passwords silverstripe


    【解决方案1】:
    1. 从您的代码中删除那个丑陋的@,然后观察那个漂亮的错误消息。错误抑制是一种非常糟糕的做法,你应该避免这种做法

    2. 已经有一个类PasswordValidatorMember 对象使用并且可以检查密码的最小长度。 (See API Docs for PasswordValdiator)

    如果您向我们展示更多代码,我可以尝试帮助您正确实现它。

    您的 Customer 对象是 Member 的子类吗?密码在哪里改?什么 FormField 用于密码?还有一个ConfirmedPasswordField 显示了两个用于匹配密码的屏蔽字段,您可以在其中设置最小长度。

    因此,假设您将密码保存在名为 Password 的字段中,您可以设置该字段,例如

    $passwordField = ConfirmedPasswordField('Password', 'Choose a password');
    $passwordField->minLength = 7; //there is no setter method for that right now
    

    然后将 $passwordField 添加到您的FieldList,例如使用

    $fields->push($passwordField);
    

    【讨论】:

    • 当我在 ConfirmedPasswordField.php 中给出 minlength 的长度时,它工作正常。有没有其他方法可以在不更改 ConfirmedPasswordField.php 中的 minLengthin 的情况下使用密码字段的 minlength 进行验证。客户是一个对象
    • 嗨,我用演示代码修改了我的答案,如何在您的 FieldList 中使用 ConfirmedPasswordField。如果它对您有用,请随时接受它;)
    • 有没有办法在创建的同一个地方将 minlength 设置为密码字段,而不是在 ConfirmedPasswordField.php 中给出 minlength。页面。
    • @user3358839 只是评论您那里的最小密码长度:) blog.codinghorror.com/your-password-is-too-damn-short
    • @user3358839 - 如果此答案解决了您的问题,请将其标记为已接受。另外,如果您认为这是一个很好的答案,那么投赞成票也很好。
    猜你喜欢
    • 2014-04-24
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2017-03-24
    相关资源
    最近更新 更多