gpt4 book ai didi

scala - 应用程序注销后单击后退按钮进入 Play Framework 中的应用程序页面

转载 作者:行者123 更新时间:2023-12-02 03:37:11 24 4
gpt4 key购买 nike

我使用 Play Framework 添加了 session 。 session 工作正常,但在注销页面重定向到索引页面(登录页面)后。然后再次单击后退或前进按钮进入主页。我在注销时启动了新 session ,然后它也进入了 homw 页面。如何在后退或前进按钮点击时显示相同的索引页面?

def login = Action {
{ implicit request =>

val email = request.body.asFormUrlEncoded.get("email")(0)
val password = request.body.asFormUrlEncoded.get("password")(0)

loginForm.bindFromRequest.fold(
errors => BadRequest(html.index(emailForm,errors,"Please enter valid username password")),
contact => Redirect(routes.Application.home).withSession("email" -> email,"password" -> password)
)
}
}

def home = Action { request =>
request.session.get("email").map{ user => Ok(views.html.home())
}.getOrElse{
Ok(views.html.index(emailForm,loginForm,""))
}
}

def logout = Action {
Redirect(routes.Application.index).withNewSession
}

最佳答案

要防止浏览器后退/前进按钮导航到已登录屏幕,您需要有两种机制:

  1. 告诉浏览器,对于位于登录屏幕后面的任何网页,它们应该始终访问您的服务器。
  2. 通过检查检查发出请求的人是否已登录来装饰返回您的安全网页之一的每个操作。如果他们的 cookie 中没有任何内容,则检查应返回索引页面传达他们的身份。

第一个可以通过让您的操作在 HTTP 响应中设置以下 header 来实现:

Cache-Control: no-cache

来自 this教程:

no-cache — forces caches to submit the request to the origin server for validation before releasing a cached copy, every time. This is useful to assure that authentication is respected (in combination with public), or to maintain rigid freshness, without sacrificing all of the benefits of caching.

您可能已经有了第二种机制。如果没有,您将不得不编写一个执行检查的操作。

将这两种机制应用于所有页面的推荐方法是使用 action composition .

关于scala - 应用程序注销后单击后退按钮进入 Play Framework 中的应用程序页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com