【问题标题】:Play 2.6 Silhouette compose SecuredAction播放 2.6 剪影组成 SecuredAction
【发布时间】:2019-05-05 23:00:56
【问题描述】:

我正在尝试做一些与this 非常相似的事情。 ContextRequestContextAction。我有一个来自SilhouettesecuredRequest,我想编写一个Action 阅读我设置的cookie

不同之处在于我从 Silhouette Identity 扩展了 User

DataSourceRequest

class DataSourceRequest[DefaultEnv, B](
  val dataSource: Option[String],
  val securedRequest: SecuredRequest[DefaultEnv, B]
) extends WrappedRequest[B](securedRequest.request) {
  def user: User = securedRequest.identity
  def requestV: Request[B] = securedRequest.request
}

DataSourceAction

class DataSourceAction @Inject()
  (val parser: BodyParsers.Default)(implicit val executionContext: ExecutionContext)
  extends ActionRefiner[({ type R[B] = SecuredRequest[DefaultEnv, B] })#R, ({ type R[B] = DataSourceRequest[DefaultEnv, B] })#R] {

  override protected def refine[A](securedRequest: SecuredRequest[DefaultEnv, A]) = Future.successful {
    try {
      Right(new DataSourceRequest[DefaultEnv, A](
        securedRequest.session.get("dataSource").getOrElse("dataSourceMissing"),
        securedRequest
      ))
    } catch {
      case _: Exception => Left(Results.NotFound)
    }
  }
}

DefaultEnv

trait DefaultEnv extends Env {
  type I = User
  type A = CookieAuthenticator
}

我无法获得User,因为

(注意com.mohiva.play.silhouette.api.Identity不匹配models.User:包实体中的类User是包api中traitIdentity的子类,但方法参数类型必须完全匹配。)

我知道我可能缺少包装器。

【问题讨论】:

    标签: scala playframework silhouette


    【解决方案1】:

    我在拉取请求中添加了一些功能,应该做同样的事情https://github.com/mohiva/play-silhouette-seed/pull/118

    【讨论】:

      【解决方案2】:

      尝试将上下文绑定到您的 Env,如下所示:

      class DataSourceRequest[Env <: DefaultEnv, B](
        val dataSource: Option[String],
        val securedRequest: SecuredRequest[Env, B]
      ) extends WrappedRequest[B](securedRequest.request) {
        def user: User = securedRequest.identity
        def requestV: Request[B] = securedRequest.request
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-26
        • 1970-01-01
        • 2018-04-21
        • 2017-11-12
        • 2012-05-26
        • 2013-06-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多