UserDetails getPassword возвращает ноль в весенней безопасности 3.1. Как получить пароль зарегистрированного пользователя?

Я реализовал функцию смены пароля с помощью Spring Security, но ((UserDetails) принципал) .getPassword ()) возвращает ноль для вошедшего в систему пользователя.

Если я правильно помню, раньше это работало в 3.0. Было ли это изменено в 3.1, так что текущий пароль вошедшего в систему пользователя не может быть восстановлен?

В приведенном ниже коде я проверяю текущий пароль, введенный в пароль пользователя с веб-страницы. Затем я проверяю, вошел ли пользовательПароль совпадает с введенным паролем. Если это так, то я хочу установить oldPasswordMatchNewPassword = true.

Как мне реализовать эту функциональность?

@RequestMapping(value = "/account/changePassword.do", method = RequestMethod.POST)
    public String submitChangePasswordPage(
            @RequestParam("oldpassword") String oldPassword,
            @RequestParam("password") String newPassword) {
        Object principal = SecurityContextHolder.getContext()
                .getAuthentication().getPrincipal();
        String username = principal.toString();
        if (principal instanceof UserDetails) {
            username = ((UserDetails) principal).getUsername();
            System.out.println("username: " + username);
            System.out.println("password: "
                    + ((UserDetails) principal).getPassword());
            if (((UserDetails) principal).getPassword() != null) {
                if (((UserDetails) principal).getPassword().equals(oldPassword)) {
                    oldPasswordMatchNewPassword = true;
                }
            }
        }
    if (oldPasswordMatchNewPassword == true) {
        logger.info("Old password matches new password. Password will be updated.");
        changePasswordDao.changePassword(username, newPassword);
        SecurityContextHolder.clearContext();
        return "redirect:home.do";
    } else {
        logger.info("Old password did not match new password. Password will be not be updated.");
        return null;
    }
}

Я поставил пару sysout (), чтобы увидеть возвращаемые значения. Для ((UserDetails) принципал) .getUsername () я вижу правильного вошедшего в систему пользователя. ((UserDetails) принципал) .getPassword () возвращает ноль.

Как получить ((UserDetails) принципал) .getPassword () это значение?

Заранее спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос