0

我有一个登录页面,用户在其中输入用户名和密码,然后用户被重定向到他的帐户页面,但是当我按下后退按钮时,它会将我带回登录页面。我如何防止这种情况发生。

4

4 回答 4

0

If you are on Devise, Check in Your controller

before_filter :authenticate_user!

Normally the back action on an already logged in user don't put him back to the form.

于 2013-07-27T12:08:47.267 回答
0

我使用一个简单的signed_in?呈现我的登录页面的新操作中的方法,大致如下所示:

    if signed_in?
      redirect_to root_path
    end

    def signed_in?
      !current_user.nil?
    end
于 2013-07-27T14:20:29.220 回答
0

当您的用户点击后退按钮时,它不会重新运行服务器代码来呈现登录页面,它只会显示缓存的浏览器版本,因此您可以尝试告诉浏览器不要缓存登录页面,然后添加服务器端检查(如其他人所示)

将此添加到您的 ApplicationController

def no_browser_cache
  response.headers["Last-Modified"] = Time.now.httpdate
  # response.headers["Expires"] = 0 -> this line kills heroku deployments
  # HTTP 1.0
  response.headers["Pragma"] = "no-cache"
  # HTTP 1.1 'pre-check=0, post-check=0' (IE specific)
  response.headers["Cache-Control"] = 'no-store, no-cache, must-revalidate, max-age=0, pre-check=0, post-check=0'
end

然后在执行该方法的登录控制器中放置一个 before_filter

然后添加您的“已登录”服务器端检查

于 2013-07-27T16:04:29.733 回答
0

authenticate_user!是一种设计方法。如果您没有使用设计,那么您可以创建一个附加before_filter到您的登录操作并在用户已登录时重定向用户。

于 2013-07-27T13:22:49.470 回答