2016-06-14 9 views
4

私は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ウェブサイトのいくつかの例から抜粋したものです。私はセキュリティについて多くの知識を持っていません。

他に何かがある場合は、私に知らせてください。

+0

は、あなたがそれを共有する気にしたい「私が理解できないエラーを与えているようですか」? –

+0

私は最初の投稿に追加しました。ここでも 'ソースファイルの変更により評価できませんでした '。ソースに変更はありませんでした。 – tzortzik

+0

それが役に立つかどうかわかりませんが、いくつかの例を見ると、DAの設定中にDAOが設定されていることがわかりました。多分あなたはそれを変えなかったでしょう。 https://github.com/mohiva/play-silhouette-seed/blob/master/app/modules/SilhouetteModule.scala#L59 –

答えて

7

私は同様の問題を解決しました。私はこの行を追加しました。

/** SilhouetteModule.scala */ 

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

はそれが役に立てば幸い:D

+0

SilhouetteModule.scalaで同じエラーがまだ発生しています:192:オプション[オプション[Seq [com.mohiva.play.silhouette.api.util.RequestPart.Value]]]の設定値リーダーを生成できません。型パラメータを持つ型の場合は自動生成できません。独自のValueReader [オプション[オプション[Seq [com.mohiva.play.silhouette.api.util.RequestPart.Va lue]]]]を定義することを検討してください。この問題は、 'configuration.underlying.as [JWTAuthenticatorSettings](" silhouette.authenticator ")のパラメータによって引き起こされる可能性があります。 – tzortzik

関連する問題