UserPassword

3.4 版本
维护中的版本

它去验证一个“应当等于当前已认证用户之密码”的input值。在表单中,当一个用户要改变其密码时,这很有用,但为了安全,需要键入他们的旧密码。

应被用于验证一个登录表单,因为它是由security系统自动完成的。

Applies to(适用于) property or method(属性或方法)
Options
Class UserPassword
Validator UserPasswordValidator

基本用法 

假设你有一个 ChangePassword 类,用在表单中,通过让用户键入其旧密码以及一个新密码,来修改他们的密码。本约束将会验证此处的旧密码能够与用户的当前密码相匹配:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// src/AppBundle/Form/Model/ChangePassword.php
namespace AppBundle\Form\Model;
 
use Symfony\Component\Security\Core\Validator\Constraints as SecurityAssert;
 
class ChangePassword
{
    /**
     * @SecurityAssert\UserPassword(
     *     message = "Wrong value for your current password"
     * )
     */
     protected $oldPassword;
}
1
2
3
4
5
6
# src/AppBundle/Resources/config/validation.yml
AppBundle\Form\Model\ChangePassword:
    properties:
        oldPassword:
            - Symfony\Component\Security\Core\Validator\Constraints\UserPassword:
                message: 'Wrong value for your current password'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- src/AppBundle/Resources/config/validation.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd">
 
    <class name="AppBundle\Form\Model\ChangePassword">
        <property name="oldPassword">
            <constraint
                name="Symfony\Component\Security\Core\Validator\Constraints\UserPassword"
            >
                <option name="message">Wrong value for your current password</option>
            </constraint>
        </property>
    </class>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// src/AppBundle/Form/Model/ChangePassword.php
namespace AppBundle\Form\Model;
 
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Security\Core\Validator\Constraints as SecurityAssert;
 
class ChangePassword
{
    public static function loadValidatorData(ClassMetadata $metadata)
    {
        $metadata->addPropertyConstraint(
            'oldPassword',
            new SecurityAssert\UserPassword(array(
                'message' => 'Wrong value for your current password',
            ))
        );
    }
}

选项 

message 

值类型: message 默认值: This value should be the user current password.

这是当背后的字符串同当前用户的密码 相匹配时,要显示的信息。

payload 

值类型: mixed 默认值: null

本选项可以把任意 “与特定的域相关”的数据(domain-specific data )附加到一个约束中。配置好的payload,并不为Validator组件所用,但它的处理进程完全在你掌控之中。

例如,你可能希望使用 几种错误级别 来在前台基于 “错误严重性” 去呈现一个 “不同的” 约束失败信息。

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)