我正在使用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依赖版本时,我也会得到构建错误。
发布于 2015-05-04 05:51:23
getSubject的签名在2.3.3中发生了变化,因为与视图层的集成存在缺陷。这些例子也需要更新。
在v2.4 ( Java和Scala版本)中,所有接口都将返回期货,当需要阻塞调用时(例如,由于模板限制),将为接口提供自动包装所需的适配器。
参见https://github.com/schaloner/deadbolt-2-scala自述文件中的2.3.3发行说明--具体来说,这个bit
DeadboltHandler#getSubject返回一个代替Future[OptionSubject]的OptionSubject。在需要主题的地方,内部代码将负责在未来包装调用。
很抱歉给你造成了混乱。
https://stackoverflow.com/questions/30002646
复制相似问题