0

Deadbolt2認証に使用しています。私extends DeadboltHandler がそれらのメソッドをオーバーライドすると、Eclipseで次のエラーが発生します:

implements be.objectify.deadbolt.scala.DeadboltHandler.getSubject
overriding method getSubject in trait DeadboltHandler of type [A](request: play.api.mvc.Request[A])Option[be.objectify.deadbolt.core.models.Subject]; method getSubject has incompatible type  

これらはコンパイル時のエラーでありgetSubject、戻り値の型が原因でメソッドで生成されます。戻り値の型を宣言し、戻り値の型としてFuture[Option[Subject]]使用するOption[Subject]と、エラーが削除されます。steve https://github.com/schaloner/deadbolt-2-scala-examples/blob/master/app/security/MyDeadboltHandler.scalaの例を見たとき、彼は使用Future[Option[Subject]]し、Eclipse でコードをインポートしてもコードにエラーはありません. コマンドを使用してコードをコンパイルするactivator clean compileと、コンパイル時エラーは発生しません。

コード:

override def getSubject[A](request: Request[A]): Future[Option[Subject]] = {
println("Method Start getSubject");
if(!request.headers.get("userId").isEmpty){
   println("If Method Start getSubject");
  val userId = request.headers.get("userId").get;
  userDao.findById(BSONObjectID.apply(userId));
}else{
  println("Else Method Start getSubject");
  Future(Option.empty);
}}

アップデート

デッドボルトbe.objectify" %% "deadbolt-scala" % "2.3.2依存バージョンを使用しているときに、Eclipse でコンパイル時エラーが発生し、ビルドが正常に実行されました。しかし、be.objectify" %% "deadbolt-scala" % "2.3.3依存バージョンを使用すると、ビルドエラーも発生します。

4

1 に答える 1