我正在使用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.scalaFuture[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);
}}
更新
当我使用 deadboltbe.objectify" %% "deadbolt-scala" % "2.3.2
依赖版本时,我在 eclipse 中出现编译时错误并成功构建运行。但是当我使用be.objectify" %% "deadbolt-scala" % "2.3.3
依赖版本时,我也会遇到构建错误。