【问题标题】:Try to run validator for password尝试为密码运行验证器
【发布时间】:2017-01-04 18:18:13
【问题描述】:

我有验证器: com.name.spring.model

    package com.websystique.springmvc.model;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import com.websystique.springmvc.service.UserService;

public class PasswordValidator implements Validator {

    @Autowired
    UserService service;

    @Override
    public boolean supports(Class<?> clazz) {
        return User.class.equals(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {
        User user = (User) target;

        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "required.password");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "retypePassword", "required.retypePassword");


        if (!user.getPassword().equals(user.getRetypePassword())) {
            errors.rejectValue("retypePassword", "nomatch.password");
        }

    }

}

这就是我激活验证器的方式: com.name.spring.controller

    @InitBinder
protected void initBinder(WebDataBinder binder) {
    binder.setValidator(PasswordValidator);
}

@RequestMapping(value = { "/register" }, method = RequestMethod.GET)
public String newUser(ModelMap model) {
    User user = new User();
    model.addAttribute("user", user);
    return "register";
}

@RequestMapping(value = { "/register" }, method = RequestMethod.POST)
public String saveUser(@Validated User user, BindingResult result, ModelMap model) {
    if (result.hasErrors()) {
        return "register";
    }
    if (!service.isUserEmailUnique(user.getId(), user.getEmail())) {
        FieldError emailError = new FieldError("user", "email", messageSource.getMessage("non.unique.email",
                new String[] { user.getEmail() }, Locale.getDefault()));
        result.addError(emailError);
        return "register";
    }
    service.saveUser(user);
    model.addAttribute("success", " User " + user.getFirstName() + " register success");
    return "success";
}

但是我有这个:错误或(或者当它工作时我写了密码:ap​​ple123和conf密码:legolego)没有验证器,只需为数据库添加新用户:(((密码不正确。(确认密码是@瞬态

    HTTP Status 500 - Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [com.websystique.springmvc.model.User] during persist time for groups [javax.validation.groups.Default, ]

type Exception report

message Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [com.websystique.springmvc.model.User] during persist time for groups [javax.validation.groups.Default, ]

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [com.websystique.springmvc.model.User] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
    ConstraintViolationImpl{interpolatedMessage='size must be between 10 and 30', propertyPath=email, rootBeanClass=class com.websystique.springmvc.model.User, messageTemplate='{javax.validation.constraints.Size.message}'}
]
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

javax.validation.ConstraintViolationException: Validation failed for classes [com.websystique.springmvc.model.User] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
    ConstraintViolationImpl{interpolatedMessage='size must be between 10 and 30', propertyPath=email, rootBeanClass=class com.websystique.springmvc.model.User, messageTemplate='{javax.validation.constraints.Size.message}'}
]

问题 2) 如何加密密码,对于 mysql ?

【问题讨论】:

标签: spring passwords spring-validator


【解决方案1】:

当我放:

@Autowired
@Qualifier("passwordValidator")
PasswordValidator passwordValidator;

到 PasswordValidator 并把这个:

@Autowired
PasswordValidator passValid;

到 AppControll 网络不行了

HTTP Status 404 - /SpringHibernateExampleweb/index

type Status report

message /SpringHibernateExampleweb/index

description The requested resource is not available.
Apache Tomcat/8.0.39

【讨论】:

  • 只是一个猜测:用 @Component 注释 PasswordValidator
猜你喜欢
  • 2017-03-14
  • 2012-04-18
  • 2013-07-31
  • 2018-02-24
  • 2010-12-18
  • 2014-09-23
  • 1970-01-01
  • 2013-09-21
  • 2020-12-04
相关资源
最近更新 更多