Rails:正确的登录结构?

时间:2012-11-25 18:07:22

标签: ruby-on-rails

我有一个“登录”功能 - :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 /”的内容并仍然保留应用程序控制器中的保护代码?

2 个答案:

答案 0 :(得分:1)

您可以使用

skip_filter :login_required, :only => [:new]
在SessionController中

跳过:new操作的过滤器。此外,您可以通过以下方式匹配“/”:

 root :to => 'sessions#new'

答案 1 :(得分:1)

除了使用上面描述的skip_filter方法之外,考虑使用Devise gem进行用户身份验证,而不是滚动自己的身份,除非你有充分的理由这样做。