加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 播放剪影没有在数据库表中插入密码

发布时间:2020-12-16 18:06:17 所属栏目:安全 来源:网络整理
导读:我正在使用播放剪影4.0.0-BETA4.除了存储密码外,一切似乎都能正常工作.每次我尝试注册一个新用户时,都会输入所有详细信息,但密码似乎存储在passwordinfo表中. 我正在使用MySQL数据库. 我花了几个小时试图找出问题所在,我无法弄明白. build.sbt "com.mohiva"
我正在使用播放剪影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"

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))
}

这里authInfoRepository.add应该在数据库中添加密码.

我试图调试authInfoRepository的add函数,它似乎让我在DelegableAuthInfoRepository.scala中添加了一个add函数.这是功能:

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))
    }
  }

我使用IntelliJ来评估daos.find(_.classTag.runtimeClass == authInfo.getClass),它似乎给了我一个我无法理解的错误(错误是:由于源文件的更改而无法评估;这个只有在使用IntelliJ进行评估时才会出现错误,日志中不会显示任何其他内容.如果我尝试继续执行,它会转到一些行的情况.如果我继续,调试器将返回daos.find行.我尝试从案例中检查add函数的实现.某些行似乎只找到与内存数据库相关的内容:InMemoryAuthInfoDAO.scala.

我不确定问题是否来自这里,但我真的不明白为什么它没有添加密码,其他一切按预期工作.

我使用的代码取自Silhouette网站的一些例子.我对安全性知之甚少.

如果还有其他遗漏,请告诉我.

解决方法

我解决了类似的问题.我添加了这一行.

/** SilhouetteModule.scala */

import net.ceedubs.ficus.readers.EnumerationReader._

希望它有所帮助:D

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读