我想在任何 Controller 操作之前执行一些函数来检查用户是否登录。我正在使用 devise
这样我就可以使用 is_signed_in?
,但我必须将 if else 条件放在 Controller 中的每个方法中。
我想要的是有这样的东西:
#some_controller.rb
before_action :is_signed_in?
def is_signed_in?
if !user_signed_in?
redirect_to new_user_session_path
else
..proceed to the action intended to call
end
end
因此,我希望此方法在任何操作(或某些操作集)之前执行,如果为 false,则重定向以登录,如果为 true,则让该操作执行。
最佳答案
Devise附带了一些有用的内置助手。
就您而言,您感兴趣的是 authenticate_user!
.看看controller filters and helpers在设计文档中。
您可以使用此方法过滤 Controller 中的操作,以确保只有已登录的用户才能处理给定的操作或 Controller 中的所有操作,否则如果用户未登录,则将其重定向到登录页面。
before_action :authenticate_user!
before_action :authenticate_user!, only: [:show]
关于ruby-on-rails - 检查用户是否在 Rails 中的任何操作之前登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30691878/