我有一个用于验证用户身份的标准,简单的代码:
# controller
val addForm = Form(
tuple("email" -> nonEmptyText, "password" -> nonEmptyText)
.verifying("Invalid email or password", result => User.authenticate(result._1, result._2).isRight)
)
def add = Action { Ok(views.html.session.add(addForm)) }
def create = Action {
addForm.bindFromRequest.fold(
failure => BadRequest(views.html.session.add(failure)),
success => Redirect(routes.Home.index)
.flashing("key1" -> "You have logged in.")
)
}
如果不是User.authenticate(result._1, result._2).isRight
,我预计它会显示错误,但没有出现错误。是的,身份验证运行良好,但失败时没有错误。
@helper.form(action = routes.Session.create()) {
@helper.inputText(form("email"))
@helper.inputText(form("password"))
<!-- ........... -->
}
为什么?
答案 0 :(得分:5)
您是否按照
的方式检查了您的视图@if(addForm.hasErrors) { ... }
例如,基本布局可能是:
@if(addForm.hasErrors) {
<div class="alert-message error">
<p>Please correct the following:</p>
<ul>
@addForm.errors.map { error =>
<li>@error.key @error.message</li>
}
</ul>
</div>
}
答案 1 :(得分:0)
您没有表单中的密钥来显示此错误,这就是错误未显示的原因
尝试使用nonEmptytTxt验证,电子邮件和自定义验证的失败案例 BadRequest(views.html.sesion.add(failure.withError(“password”,“无效的电子邮件或密码”)))