用户未登录时如何将用户重定向到登录页面

Omn*_*ent 2 ruby-on-rails

当用户登录时,我们将其用户ID存储在会话中.

session[:user_id] = user.id
Run Code Online (Sandbox Code Playgroud)

现在在我们网站的所有其他链接上,我们希望用户重定向 session[:user_id] == nil

我认为它将完成的方式是它将在控制器的每个方法中完成.

def show_customers
   if session[:user_id] == nil
     redirect_to (:controller => "authentication", :action => "login")
   #code related to show_customers goes here
end
Run Code Online (Sandbox Code Playgroud)

但这需要在每个控制器的每个方法中完成.

是否有更理智的Rails'y方式来做到这一点?

小智 5

使用before_filter验证会话是否有效,如果您不想将它放在每个控制器中,请将它放在application_controller中(因为所有控制器都从它继承).您还可以通过覆盖控制器中的方法轻松排除/限制其所要求的操作.