Hi,
I am new to scala, I integrated silhouette authentication in application, Its working fine. While creating the global authentication mechanism using 'doFilter', I am getting following error, Help me to resolve this issue.
Issue:
1) No implementation for com.mohiva.play.silhouette.api.Environment<models.User, com.mohiva.play.silhouette.impl.authenticators.JWTAuthenticator> was bound.
while locating com.mohiva.play.silhouette.api.Environment<models.User, com.mohiva.play.silhouette.impl.authenticators.JWTAuthenticator>
1 error
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1042) ~[guice-4.0.jar:na]
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1047) ~[guice-4.0.jar:na]
at net.codingwell.scalaguice.InjectorExtensions$ScalaInjector.instance(InjectorExtensions.scala:25) ~[scala-guice_2.11-4.0.0.jar:4.0.0]
at Global$.doFilter(Global.scala:29) ~[na:na]
at play.api.GlobalSettings$$anonfun$doFilter$1.apply(GlobalSettings.scala:144) ~[play_2.11-2.4.6.jar:2.4.6]
at play.api.GlobalSettings$$anonfun$doFilter$1.apply(GlobalSettings.scala:138) ~[play_2.11-2.4.6.jar:2.4.6]
at play.api.GlobalSettings$class.onRequestReceived(GlobalSettings.scala:130) ~[play_2.11-2.4.6.jar:2.4.6]
at Global$.onRequestReceived(Global.scala:20) ~[na:na]
at play.api.http.GlobalSettingsHttpRequestHandler.handlerForRequest(HttpRequestHandler.scala:183) ~[play_2.11-2.4.6.jar:2.4.6]
at play.core.server.Server$$anonfun$sendHandler$1$1.apply(Server.scala:38) ~[play-server_2.11-2.4.6.jar:2.4.6]
at play.core.server.Server$$anonfun$sendHandler$1$1.apply(Server.scala:37) ~[play-server_2.11-2.4.6.jar:2.4.6]
at scala.util.Success$$anonfun$map$1.apply(Try.scala:237) ~[scala-library-2.11.7.jar:na]
at scala.util.Try$.apply(Try.scala:192) ~[scala-library-2.11.7.jar:na]
at scala.util.Success.map(Try.scala:237) ~[scala-library-2.11.7.jar:na]
at play.core.server.Server$class.sendHandler$1(Server.scala:37) [play-server_2.11-2.4.6.jar:2.4.6]
at play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:58) [play-server_2.11-2.4.6.jar:2.4.6]
... 38 common frames omitted
doFilter:
val injector = Guice createInjector ()
implicit var messagesApi: MessagesApi = _
override def doFilter(a: EssentialAction): EssentialAction = {
println("---------------------------------------YOUR ARE IN DO FILTER -----------------------------------------------------------------------------------")
import net.codingwell.scalaguice.InjectorExtensions._
implicit val env = injector.instance[Environment[User, JWTAuthenticator]]
Filters(super.doFilter(a), new SecuredFilter())
}
SecuredFilter:
class SecuredFilter(
implicit val messagesApi: MessagesApi,
implicit val env:Environment[User,JWTAuthenticator])
extends Filter with Silhouette[User, JWTAuthenticator] with I18nSupport {
override def apply(next: RequestHeader => Future[Result])(
request: RequestHeader): Future[Result] = {
println("------------------------- You Are In Secured Filter-----------------------------------------")
val action = UserAwareAction.async { r =>
request.path match {
case "/admin" if r.identity.isEmpty => Future.successful(Unauthorized)
case _ => next(request)
}
}
action(request).run
}
}