我在 Play 2.1.3 项目(Scala)中添加了securesocial,它与deadbolt 配合得很好。
我希望未经身份验证的请求被重定向到登录页面,并在登录后返回到他们请求的原始 URL。但是,在这种情况下,登录后它们总是被发送到 onLoginGoToin securesocial.conf 中定义的路径,而不管登录前它们请求的页面是什么。
我错过了一些配置吗?
谢谢,
编辑: 这是我在操作中使用安全社交和死锁的方式:
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())
}
编辑2:
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
}
}