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