ruby-on-rails - 检查用户是否在 Rails 中的任何操作之前登录

标签 ruby-on-rails ruby-on-rails-4

我想在任何 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/

相关文章:

ruby-on-rails - Rails ActiveModel::Serializer 嵌套响应在 "data":父级

ruby-on-rails - 如何使用 Rails 为所有迁移文件设置默认的 'uuid-ossp' 扩展名?

ruby-on-rails - 根据成员的年龄过滤团队的范围

ruby-on-rails - 如何通过 Rspec 测试 has_many? [Shoulda-matchers]

ruby-on-rails - Rails 5.1.1 不生成脚手架/ Controller 等

ruby-on-rails - 有没有办法使用 Ruby map (& :method) shorthand for passing a key to all the hashes in an array?

ruby-on-rails - attr_accessor 和 attr_reader 在 Rails 4 中不起作用

mysql - 在 ruby​​ on Rails 中有效连接 JSON 列类型

ruby-on-rails - Rspec:测试实例变量的赋值

heroku - Rails Heroku - 无法 git push heroku master - i18n 问题