有这样的网址
example.com/users/1376
即使用户未登录,任何人都可以看到此页面。
还有像这样的网址
example.com/users/1376?mode=1
只有登录用户才能看到此页面,否则用户将被重定向到登录页面(new_users_session_path)
可能是这样的吗?
before_filter :authenticate_user!, :only => [:show(params[:mode]=1)]
如果没有,请告诉我如何解决这个问题。
由于
答案 0 :(得分:2)
如果不应该运行该操作,请使用before_filter(rails 4的before_action)调用呈现或重定向的方法。
before_filter :test_for_mode, :only => :show
...
private
def test_for_mode
if (params[:mode] == '1') && !user_signed_in?
redirect_to new_user_session_path
end
答案 1 :(得分:1)
对于rails 3.2
before_filter :redirect_user, :only => :show
对于rails 4
before_action :redirect_user, :only => :show
def redirect_user
if params[:mode] == 1 && current_user
redirect_to user_path(id: params[:id], mode: 1) #example.com/users/1376?mode=1
elsif !current_user && params[:mode].blank?
redirect_to user_path(id: params[:id])
else
redirect_to new_users_session_path
end
end