如何在Play中实现用户验证!?

时间:2012-08-15 02:51:04

标签: scala playframework squeryl

我有一个User模型,其方案如下所示:

# --- First database schema

# --- !Ups

create sequence s_user_id;

create table user (
  id  bigint DEFAULT nextval('s_user_id'),
  firstName  varchar(128),
  lastName  varchar(128),
  email  varchar(128) unique
);


# --- !Downs

drop table user;
drop sequence s_user_id;

如何验证新用户而不是仅使用

崩溃
  

RuntimeException:执行语句时发生异常:唯一索引   或主要密钥违规:

另外,我没有使用任何形式或任何形式的观点。我只是在创建一个API ......

1 个答案:

答案 0 :(得分:0)

您可以使用表单来定义和触发验证规则。

请注意,您可以使用没有UI的表单,数据可以来自您想要的(WS,代码,HTML ...)

例如:

case class User(name: String, age: Int)

val userForm = Form(
  mapping(
    "name" -> text.verifying(required),
    "age" -> number.verifying(min(0), max(100))
  ) verifying("Your custom validation", fields => fields match { 
      case (n, a) => User.myCustomValidation(n,a) 
  }) (User.apply)(User.unapply)
)

val filledForm = userForm.fill(User("Bob", 18))
if (filledForm.hasErrors) {
 // or filledForm.fold
}

有关详细信息,请参阅ScalaForms文档,或more complex exemple