我有一个用于密码重置的 Spring MVC 网页。这需要我们执行以下验证工作流程:
- 提供用户名或电子邮件
- 如果提供了电子邮件,请确保其格式有效(例如:@Email)
通过以下方式检查用户是否存在:
3a) 尝试通过用户名从数据库加载用户
3b) 如果通过用户名加载返回null
,尝试通过电子邮件从数据库加载用户加载后,检查用户是否被锁定:
user.isLocked()
目前我在一个org.springframework.validation.Validator
但是,这需要我的验证器有权访问该UserService
对象,以便它可以加载用户。这会导致用户被加载 2 次,一次由我的验证器加载,第二次由我的验证器加载,Controller
因此它可以调用.resetPassword(User)
.
问题:我应该在哪里检查项目#3?
这些验证是否更适合 Controller ?如果我保持原样验证,我可以从验证器返回用户吗(void
由于验证器接口它有方法)?