Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Play框架中获取绝对URL并确保社交安全_Java_Http_Playframework 2.0_Absolute Path_Securesocial - Fatal编程技术网

Java 在Play框架中获取绝对URL并确保社交安全

Java 在Play框架中获取绝对URL并确保社交安全,java,http,playframework-2.0,absolute-path,securesocial,Java,Http,Playframework 2.0,Absolute Path,Securesocial,我正在我的游戏项目中使用安全社交。我正在尝试使用我自己的电子邮件进行注册 此处描述了如何: 我的问题是,我在尝试在模板中创建绝对URL时出错: @securesocial.Controller.routes.Registration.signUp(mailToken).absoluteURL(IdentityProvider.sslEnabled) 下面是错误日志: [错误]播放-无法调用操作,最终出现错误: java.lang.Runt imeException:中没有可用的HTTP上下文

我正在我的游戏项目中使用安全社交。我正在尝试使用我自己的电子邮件进行注册

此处描述了如何:

我的问题是,我在尝试在模板中创建绝对URL时出错:

@securesocial.Controller.routes.Registration.signUp(mailToken).absoluteURL(IdentityProvider.sslEnabled)

下面是错误日志:

[错误]播放-无法调用操作,最终出现错误: java.lang.Runt imeException:中没有可用的HTTP上下文 在这里[错误]应用程序-

!@6j0al12dk-内部服务器错误,用于(POST)[/signup]>

play.api.Application$$anon$1:执行异常[[RuntimeException: 此处没有可用的HTTP上下文。]] 在play.api.Application$class.handleError(Application.scala:293)~[play_ 2.10.jar:2.2.3] play.api.DefaultApplication.handleError(Application.scala:399)[play_ 2.10.jar:2.2.3] 在play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun $applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:264) [播放2.10.jar:2.2.3]

    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun
    at scala.Option.map(Option.scala:145) [scala-library.jar:na]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3.applyOrE
$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:264) [播放2.10.jar:2.2.3]

    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun
    at scala.Option.map(Option.scala:145) [scala-library.jar:na]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3.applyOrE
lse(PlayDefaultUpstreamHandler.scala:264)[play_2.10.jar:2.2.3]导致 by:java.lang.RuntimeException:没有可用的HTTP上下文 从这里。 在play.mvc.Http$Context.current(Http.java:30)~[play_2.10.jar:2.2.3] 在play.mvc.Http$Context$Implicit.ctx(Http.java:196)~[play_2.10.jar:2.2.3] 在play.core.j.PlayMagicForJava$.requestHeader(TemplateMagicForJava.scal a:56)~[play-java_2.10.jar:2.2.3] 在views.html.custom.mails.signUpEmail$.apply(signUpEmail.template.scala :42)~[classes/:na] 在plugins.NekViews.getSignUpEmail(NekViews.scala:100)~[classes/:na] 在securesocial.core.providers.utils.Mailer$.sendSignUpEmail(Mailer.scal a:49)~[securesocial_2.10-2.1.3.jar:2.1.3][info]应用程序- [securesocial]卸载的身份提供程序:userpass[info]应用程序 -[securesocial]已卸载密码哈希器bcrypt[info]播放-关闭应用程序 默认Akka系统


有人知道错误是什么吗?

您的模板需要隐式请求,这是获取绝对URL所必需的

@(/*template's parameters*/)(implicit request: RequestHeader)

此请求必须在呈现模板的方法中可用。

我有一个非常类似的错误,如果不是相同的,可能您还在项目中混合了一些java代码

您必须在控制器(在本例中为自定义视图控制器)中创建java上下文,以便视图使用它

例如:

Scala帮助器创建java上下文

object JavaContext {

  import play.mvc.Http
  import play.core.j.JavaHelpers

  def withContext[Status](block: => Status)(implicit header: RequestHeader): Status = {
    try {
      Http.Context.current.set(JavaHelpers.createJavaContext(header))
      block
    }
    finally {
      Http.Context.current.remove()
    }
  }
}
用法:

class CustomSecureSocialTemplates(env:RuntimeEnvironment[_]) extends ViewTemplates.Default(env:RuntimeEnvironment[_])
{

  override def getLoginPage(form: Form[(String, String)],
                            msg: Option[String] = None)(implicit request: RequestHeader, lang: Lang): Html = {
    JavaContext.withContext {
      views.html.security.login(form,msg)
    }
  }

//...
}
资料来源: