tzo*_*zik 4 scala playframework silhouette
我在用play silhouette 4.0.0-BETA4.除了存储密码外,一切似乎都能正常工作.每次我尝试签名新用户时,都会输入所有详细信息,但密码似乎存储在passwordinfo表中.
我正在使用MySQL数据库.
我花了几个小时试图找出问题所在,我无法弄明白.
build.sbt
"com.mohiva" %% "play-silhouette" % "4.0.0-BETA4",
"com.mohiva" %% "play-silhouette-persistence-memory" % "4.0.0-BETA4",
"com.mohiva" %% "play-silhouette-password-bcrypt" % "4.0.0-BETA4",
"com.mohiva" %% "play-silhouette-testkit" % "4.0.0-BETA4" % "test"
Run Code Online (Sandbox Code Playgroud)
SignUpController
val user = User(
None,
userID = UUID.randomUUID(),
loginInfo = loginInfo,
firstName = Some(data.firstName),
lastName = Some(data.lastName),
fullName = Some(data.firstName + " " + data.lastName),
email = Some(data.email),
avatarURL = None
)
for {
avatar <- avatarService.retrieveURL(data.email)
user <- userService.save(user.copy(avatarURL = avatar))
authInfo <- authInfoRepository.add(loginInfo, authInfo)
authenticator <- silhouette.env.authenticatorService.create(loginInfo)
token <- silhouette.env.authenticatorService.init(authenticator)
} yield {
silhouette.env.eventBus.publish(SignUpEvent(user, request))
silhouette.env.eventBus.publish(LoginEvent(user, request))
Ok(Json.obj("token" -> token))
}
Run Code Online (Sandbox Code Playgroud)
这里authInfoRepository.add应该在数据库中添加密码.
我试图调试add函数,authInfoRepository它似乎让我进入add函数DelegableAuthInfoRepository.scala.这是功能:
override def add[T <: AuthInfo](loginInfo: LoginInfo, authInfo: T): Future[T] = {
daos.find(_.classTag.runtimeClass == authInfo.getClass) match {
case Some(dao) => dao.asInstanceOf[AuthInfoDAO[T]].add(loginInfo, authInfo)
case _ => throw new ConfigurationException(AddError.format(authInfo.getClass))
}
}
Run Code Online (Sandbox Code Playgroud)
我使用IntelliJ进行评估daos.find(_.classTag.runtimeClass == authInfo.getClass),它似乎给了我一个我无法理解的错误(错误是:Could not evaluate due to a change in a source file;只有在使用IntelliJ进行评估时才出现此错误,日志中不会出现任何其他内容).如果我尝试继续执行,它会转到该case Some行.如果我继续,调试器将返回到daos.find行.我试图add从case Some线上检查函数的实现,它似乎只找到与内存数据库相关的东西:InMemoryAuthInfoDAO.scala.
我不确定问题是否来自这里,但我真的不明白为什么它没有添加密码,其他一切按预期工作.
我使用的代码取自Silhouette网站的一些例子.我对安全性知之甚少.
如果还有其他遗漏,请告诉我.
小智 7
我解决了类似的问题.我添加了这一行.
/** SilhouetteModule.scala */
import net.ceedubs.ficus.readers.EnumerationReader._
Run Code Online (Sandbox Code Playgroud)
希望它有所帮助:D
| 归档时间: |
|
| 查看次数: |
515 次 |
| 最近记录: |