私は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"
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
データベースにパスワードを追加する必要があります。
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))
}
}
私はdaos.find(_.classTag.runtimeClass == authInfo.getClass)
を評価するためのIntelliJを使用し、(エラーがある私が理解できないエラーを与えているようだ:Could not evaluate due to a change in a source file
;このエラーはのIntelliJと評価し、他に何もに表示されない場合にのみ表示されますログ)。実行を続行しようとすると、case Some
行に行きます。続行すると、デバッガはdaos.find
行に戻ります。私はcase Some
行からadd
関数の実装を調べようとしましたが、それはIn Memory Databaseに関連するものだけを見つけるようです:InMemoryAuthInfoDAO.scala
。
ここから問題が発生しているかどうかはわかりませんが、なぜパスワードを追加していないのか分かりません。
私が使用したコードは、Silhouetteウェブサイトのいくつかの例から抜粋したものです。私はセキュリティについて多くの知識を持っていません。
他に何かがある場合は、私に知らせてください。
は、あなたがそれを共有する気にしたい「私が理解できないエラーを与えているようですか」? –
私は最初の投稿に追加しました。ここでも 'ソースファイルの変更により評価できませんでした '。ソースに変更はありませんでした。 – tzortzik
それが役に立つかどうかわかりませんが、いくつかの例を見ると、DAの設定中にDAOが設定されていることがわかりました。多分あなたはそれを変えなかったでしょう。 https://github.com/mohiva/play-silhouette-seed/blob/master/app/modules/SilhouetteModule.scala#L59 –