我正在努力使用 Play.current.configuration 返回的值在我的控制器中进行简单的字符串比较。我从 application.conf 文件节点获取的值似乎从未通过我的字符串比较。就好像它不是一个字符串。这是 application.conf 参数。
admin.users=[
{ "userName" : "admin", "password" : "secret" },
{ "userName" : "rkuhar", "password" : "alsosecret" }
]
这是控制器方法
def isAuthenticated(userName: String, credentials: String): Boolean = {
Play.current.configuration.getObjectList("admin.users") match {
case Some(adminUsers) => {
log.debug("admin.users: %s".format(adminUsers))
for (adminUser <- adminUsers) {
val adminUserName: String = adminUser.get("userName").render()
log.trace("userName: %s, adminUserName: %s".format(userName,adminUserName))
if (adminUserName == userName) {
log.trace("USER MATCH")
} else {
log.trace("skip user")
}
}
"admin123".equals(credentials)
}
case None => {
log.warn("application.conf produced no admin.users")
false
}
}
}
为什么我的简单字符串比较找不到匹配项?就好像 ConfigValue.render() 实际上没有返回一个字符串?当为 isAuthenticated 提供用户名“admin”时,我的日志记录显示了这一点。
2013-06-06T13:07:54.480 [trace] c.a.Sessions$ DSN: APV: RID: - userName: admin, adminUserName: "admin"
请注意传入的 userName 值是如何以 admin 身份记录的,但 adminUserName 周围有引号“admin”。
如何让 Play 框架为我提供 JSON 字段的实际字符串值,而不是 JSON 字段的字符串值的字符串值?
Play 2.1 的学习曲线感觉越来越陡峭。