setPasswordFromListString()不保存密码

时间:2014-02-11 02:39:33

标签: scala lift protouser

我正在我的User类(继承自ProtoUser)中编写一个函数来为我的Scala Lift应用程序引导管理员用户:

def generateAdminUser():Boolean = {
  if (User.findAll(By(User.admin, true)).length == 0) {
    val pw = Props.get("firstadmin.password") openOr "hilariouslybadpassword"
    val admin = User.create
                    .lastName(Props.get("firstadmin.lastName") openOr "Lady")
                    .firstName(Props.get("firstadmin.firstName") openOr "DeFalt")
                    .email(Props.get("firstadmin.email") openOr "newinstall@mydomain.org")
                    .validated(true)
                    .setPasswordFromListString(pw::Nil)
                    .admin(true)
                    .saveMe
  } else {
    false
  }
}

除密码外,其他所有内容似乎都在保存。当我查看数据库时:

id  lastname    firstname   email               locale  timezone    password_pw password_slt    biography   validated   uniqueid    superuser   admin_c
1   Lady        DeFalt      testemail@gmail.com en_US   US/Pacific  *           AE3MQZIX2KUB2ZMR        1   V25VPDIV43BW4HAATP1XMMV152PEWX3L    0   1

*显然是错误的(通过正常的代码路径注册证明了这一点:它应该是pw的咸味哈希),但我在console.devmode.log中没有得到任何东西,也不在我的控制台上。我试图以编程方式添加用户,但我不确定为什么会失败?作为Scala的新手,我不确定最好的诊断方法:我尽可能地遵循代码路径,但在ProtoUser / MegaProtoUser /等迷宫中有点迷失。

1 个答案:

答案 0 :(得分:1)

您是否在属性文件中设置了firstadmin.password

我自己没有使用ProtoUser,但查看代码 - 在PasswordField的{​​{3}}方法中,看起来列表需要输入两次密码才能验证和哈希。

这样的事情可能有所帮助:

setPasswordFromListString(pw::pw::Nil)

此外,密码的setFromAnydefault minimum length个字符。如果5,它似乎默认为validation fails