如果用户未登录,我希望将用户重定向到登录表单页面。
问题是我不想在每个操作中都这样做。我知道有一种方法可以仅在每个控制器中定义一次这个行为(即无论控制器中的操作如何执行,都会有一个操作被执行),但我记不清楚该怎么做了。
如果用户未登录,我希望将用户重定向到登录表单页面。
问题是我不想在每个操作中都这样做。我知道有一种方法可以仅在每个控制器中定义一次这个行为(即无论控制器中的操作如何执行,都会有一个操作被执行),但我记不清楚该怎么做了。
使用before_action。将以下内容放置在您的应用程序控制器中。
# application_controller.rb
before_action :require_login
private
def require_login
unless current_user
redirect_to login_url
end
end
上面的代码假设您已经定义了一个方法current_user
,当用户登录时返回用户记录。
然后,在您的登录控制器中执行:
skip_before_action :require_login
如果您希望仅将登录重定向到特定控制器,则使用以下方法:
skip_before_filter :require_login, :only=>[:edit,:update]
或者:
skip_before_filter :require_login, :except=>[:new,:create]
before_action :authenticate_user!
https://github.com/heartcombo/devise#controller-filters-and-helpers