我正在我的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 /等迷宫中有点迷失。
答案 0 :(得分:1)
您是否在属性文件中设置了firstadmin.password
?
我自己没有使用ProtoUser
,但查看代码 - 在PasswordField
的{{3}}方法中,看起来列表需要输入两次密码才能验证和哈希。
这样的事情可能有所帮助:
setPasswordFromListString(pw::pw::Nil)
此外,密码的setFromAny
为default minimum length个字符。如果5
,它似乎默认为validation fails。