首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合使用ActionBuilder和securesocial

结合使用ActionBuilder和securesocial
EN

Stack Overflow用户
提问于 2013-11-22 21:42:13
回答 1查看 573关注 0票数 1

我正在使用带有securesocial的play 2.2.1,我的许多操作都是使用securesocial提供的SecuredAction进行身份验证的。

现在,我想为特定类型的请求创建一个ActionBuilder,就像文档中的ItemAction一样。

我试着这样做

代码语言:javascript
复制
  /**
   * ActionBuilder for use with actions that use Item objects.
   */
  def ItemAction() = new ActionBuilder[RequestWithItem] {
    def invokeBlock[A](request: SecuredRequest[A], block: (RequestWithItem[A]) => Future[SimpleResult]) = {
      val futureItem = itemsCollection.
        find(Json.obj("identityId" -> request.user.identityId)).one[Item]
      futureItem.flatMap { maybeItem =>
        maybeItem match {
          case Some(item) => {
            block(new RequestWithItem(item, request))
          }
          case _ => Future(BadRequest("could not get a item for this user."))
        }
      }
    }
  }

我得到了这个编译错误

代码语言:javascript
复制
 object creation impossible, since method invokeBlock in trait ActionBuilder of type [A](request: play.api.mvc.Request[A], block: models.RequestWithitem[A] => scala.concurrent.Future[play.api.mvc.SimpleResult])scala.concurrent.Future[play.api.mvc.SimpleResult] is not defined

我知道invokeBlock应该接受play.api.mvc.Request[A]而不是securesocial.core.SecuredRequest[A],但是我不能让它工作。

EN

回答 1

Stack Overflow用户

发布于 2013-11-23 04:05:14

假设您想用SecuredAction (通过SecureSocial)组合ItemAction,这将是一种方法:

代码语言:javascript
复制
case class Item(id: Long) // replace with your real world item

def SecuredItemAction(f: => Item => Request[AnyContent] => Result) = 
  SecuredAction { implicit request =>
  val item = Some(new Item(7)) // replace with your real world item fetch
  item.map { item =>
    f(item)(request)
  }.getOrElse(NotFound)
}

然后,您可以通过以下方式使用它:

代码语言:javascript
复制
def index = SecuredItemAction { item =>
  implicit request =>
    Ok(item.id.toString)
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20146334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档