Playframework SecureSocial将全部重定向到OnlogingTo-播放2.1
我将securesocial添加到Play2.1.3项目(Scala)中,它可以很好地处理死锁 我希望未经验证的请求被重定向到登录页面,并在登录后返回到它们请求的原始URL。但是,在这种情况下,在登录之后,它们总是被发送到onLoginGoToin securesocial.conf中定义的路径,而不管它们在登录之前请求的页面是什么 我是否缺少一些配置 谢谢 编辑: 以下是我在行动中如何使用带锁销的securesocial:Playframework SecureSocial将全部重定向到OnlogingTo-播放2.1,playframework,playframework-2.0,securesocial,Playframework,Playframework 2.0,Securesocial,我将securesocial添加到Play2.1.3项目(Scala)中,它可以很好地处理死锁 我希望未经验证的请求被重定向到登录页面,并在登录后返回到它们请求的原始URL。但是,在这种情况下,在登录之后,它们总是被发送到onLoginGoToin securesocial.conf中定义的路径,而不管它们在登录之前请求的页面是什么 我是否缺少一些配置 谢谢 编辑: 以下是我在行动中如何使用带锁销的securesocial: def list = Pattern("products.list",
def list = Pattern("products.list", PatternType.EQUALITY, new MyDeadboltHandler) {
SecuredAction { implicit request =>
Ok(views.html.products.list(Product.listAll))
}
}
以及myDeadboltHandler中的onAuthFailure:
def onAuthFailure[A](request: Request[A]): Result = {
Logger.debug("authentication failure")
Results.Redirect(securesocial.controllers.routes.LoginPage.login())
}
EDIT2:
implicit def username(implicit request: RequestHeader):Option[Identity] = SecureSocial.currentUser
override def getSubject[A](request: Request[A]): Option[Subject] = {
val maySession = username(request)
maySession match {
case Some(session) => Some(new User(session.identityId.userId))
case _ => None
}
}
不知道你是如何使用它的门闩。您看过示例应用程序吗?“它应该是这样工作的。”乔治。谢谢你的评论和这么棒的插件。我用更多的细节编辑了我的问题。我认为原始url应该存储在cookie中,但除了id之外,我看不到任何cookie。如果用户未经身份验证,MyDeadboltHandler会做什么?可能是您无法执行SecuredAction实现。SecureSocial在那里保存用户试图访问的url。@Jorge:我编辑了这个问题。在没有用户的情况下,它返回一个“None”来告诉Deadbolt没有有效的用户。