我有一个“登录”功能 - :controller => “sessions”,:action => “新”
我还编辑过:controller => “应用程序”,以便如果我在网站上的任何地方,并且我没有登录 - 我被重定向到根路径:
before_filter :login_required
protected
def login_required
redirect_to "/" if not session[:user]
end
但问题是现在我无法进入登录页面。
以前是localhost:3000 / sessions / new
我认为改变根路径会有所帮助,所以我将其添加到routes.rb:
match '/', :controller => 'sessions', :action => 'new'
之后,localhost:3000开始在浏览器中显示“Wrong Forwarding”错误。
我也不想将“/ sessions / new /”作为我的默认位置。
有没有办法,当我去“/” - 看到“/ sessions / new /”的内容并仍然保留应用程序控制器中的保护代码?
答案 0 :(得分:1)
您可以使用
skip_filter :login_required, :only => [:new]
在SessionController中跳过:new操作的过滤器。此外,您可以通过以下方式匹配“/”:
root :to => 'sessions#new'
答案 1 :(得分:1)
除了使用上面描述的skip_filter方法之外,考虑使用Devise gem进行用户身份验证,而不是滚动自己的身份,除非你有充分的理由这样做。