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
依存バージョンを使用すると、ビルドエラーも発生します。