2016-05-06 23 views
0

スカラシルエットを使用する滑らかなシードテンプレートPlayで認証を実装しようとしています。認証時(サインインをクリックしたとき) - コンソールでこのエラーが表示されます。これを解決するためにどこにアイデアがありますか? SilhouetteとScalaシステム自体はかなり新しいです。スカラシルエットが認証できません

[error] a.a.ActorSystemImpl - Uncaught fatal error from thread [application-akka.actor.default-dispatcher-3] shutting down ActorSystem [application] 
java.lang.NoSuchMethodError: play.api.libs.functional.syntax.package$.functionalCanBuildApplicative(Lplay/api/libs/functional/Applicative;)Lplay/api/libs/functional/FunctionalCanBuild; 
    at com.mohiva.play.silhouette.impl.authenticators.CookieAuthenticator$.<init>(CookieAuthenticator.scala:92) 
    at com.mohiva.play.silhouette.impl.authenticators.CookieAuthenticator$.<clinit>(CookieAuthenticator.scala) 
    at com.mohiva.play.silhouette.impl.authenticators.CookieAuthenticatorService.init(CookieAuthenticator.scala:229) 
    at com.mohiva.play.silhouette.impl.authenticators.CookieAuthenticatorService.init(CookieAuthenticator.scala:148) 
    at controllers.CredentialsAuthController$$anonfun$authenticate$1$$anonfun$apply$3$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$7.apply(CredentialsAuthController.scala:72) 
    at controllers.CredentialsAuthController$$anonfun$authenticate$1$$anonfun$apply$3$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$7.apply(CredentialsAuthController.scala:70) 
    at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:251) 
    at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249) 
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) 
    at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55) 

方法自体は: -

env.authenticatorService.embed(v, result) 

答えて

1

問題がシルエット3.0だったと2.5.3の非互換性を再生

def authenticate = Action.async { implicit request => 
    SignInForm.form.bindFromRequest.fold(
     form => Future.successful(BadRequest(views.html.signIn(form))), 
     data => { 
     val credentials = Credentials(data.email, data.password) 
     credentialsProvider.authenticate(credentials).flatMap { loginInfo => 
      val result = Redirect(routes.ApplicationController.index()) 
      userService.retrieve(loginInfo).flatMap { 
      case Some(user) => 
       val c = configuration.underlying 
       env.authenticatorService.create(loginInfo).map { 
       case authenticator if data.rememberMe => 
        authenticator.copy(
        expirationDateTime = clock.now + c.as[FiniteDuration]("silhouette.authenticator.rememberMe.authenticatorExpiry"), 
        idleTimeout = c.getAs[FiniteDuration]("silhouette.authenticator.rememberMe.authenticatorIdleTimeout"), 
        cookieMaxAge = c.getAs[FiniteDuration]("silhouette.authenticator.rememberMe.cookieMaxAge") 
       ) 
       case authenticator => authenticator 
       }.flatMap { authenticator => 
       env.eventBus.publish(LoginEvent(user, request, request2Messages)) 
       env.authenticatorService.init(authenticator).flatMap { v => 
        env.authenticatorService.embed(v, result) 
       } 
       } 
      case None => Future.failed(new IdentityNotFoundException("Couldn't find user")) 
      } 
     }.recover { 
      case e: ProviderException => 
      Redirect(routes.ApplicationController.signIn()).flashing("error" -> Messages("invalid.credentials")) 
     } 
     } 
    ) 
    } 

これは、ラインの例外ピンです。 Silhouetteを4.0 Beta4にアップグレードした後、いくつかの変更が実行されました。

関連する問題