2014-03-27 72 views
3

我使用播放框架添加了會話。會話工作正常,但註銷頁面重定向到索引頁面(登錄頁面)後,點擊後退或前進按鈕再次進入主頁面。我已經開始註銷的新會話,然後它也進入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

爲了防止瀏覽器的後退/前進按鈕從導航到登錄屏幕,你需要有兩個機制到位:

  1. 告訴瀏覽器,他們應該總是打你的服務器任何位於您的登錄屏幕後面的網頁。
  2. 用一張支票來裝飾您的安全網頁中的每一項操作,以查看提出請求的人是否已登錄。如果檢查人員的Cookie中沒有任何內容,則該檢查應該返回索引頁面傳達他們的身份。

其中第一個可以讓你的行動設置下列頭中的HTTP響應來實現:

Cache-Control: no-cache 

this教程:

無緩存 - 強制高速緩存在每次釋放緩存副本之前將請求提交給源服務器進行驗證。這有助於確保認證(與公共結合)得到尊重,或者保持嚴格的新鮮度,而不會犧牲高速緩存的所有好處。

您可能已經有了第二種機制。如果沒有,你必須寫一個執行檢查的動作。

然後將這兩種機制應用於所有頁面的推薦方法是使用action composition

相關問題