Tôi đang cố gắng để đặt cùng một tính năng thay đổi mật khẩu trong Symfony2. Tôi có trường "mật khẩu hiện tại", trường "mật khẩu mới" và trường "xác nhận mật khẩu mới" và phần tôi hiện đang tập trung vào đang xác thực trường "mật khẩu hiện tại".Members một mật khẩu trong Symfony2
(Bằng cách này, tôi nhận ra rằng những thứ như FOSUserBundle
tồn tại sẽ chăm sóc rất nhiều thứ cho tôi, nhưng tôi đã xây dựng hệ thống xác thực dựa trên tài liệu chính thức của Symfony và tôi không có thời gian ngay bây giờ để làm lại tất cả các mã xác thực của tôi)
Những gì tôi đang tưởng tượng/hy vọng tôi có thể làm là tạo một callback xác nhận nói rằng một cái gì đó như thế này:.
// Entity/User.php
public function currentPasswordIsValid(ExecutionContext $context)
{
$currentPassword = $whatever; // whatever the user submitted as their current password
$factory = $this->get('security.encoder_factory'); // Getting the factory this way doesn't work in this context.
$encoder = $factory->getEncoder($this);
$encryptedCurrentPassword = $encoder->encodePassword($this->getPassword(), $this->getSalt());
if ($encyptedCurrentPassword != $this->getPassword() {
$context->addViolation('Current password is not valid', array(), null);
}
}
như bạn thấy trong ý kiến của tôi , có ít nhất một vài lý do khiến mã trên không hoạt động. Tôi sẽ chỉ đăng những câu hỏi cụ thể về những vấn đề cụ thể đó, nhưng có lẽ tôi đang sủa cây sai hoàn toàn. Đó là lý do tại sao tôi hỏi câu hỏi tổng thể.
Vì vậy, làm thế nào tôi có thể xác nhận mật khẩu của người dùng?
Được rồi, cảm ơn. Nhưng phần xác thực mật khẩu thực sự thì sao? Đó là câu hỏi của tôi. Tôi đã biết cách tạo trình xác nhận tùy chỉnh và cách tạo các trường biểu mẫu. –
Đã thêm ví dụ. –
Tuyệt vời, cảm ơn. Tôi sẽ thử. –