Ruby on rails restful_身份验证仅应用于控制器内的操作?

Ruby on rails restful_身份验证仅应用于控制器内的操作?,ruby-on-rails,restful-authentication,Ruby On Rails,Restful Authentication,我已经从technoweenie安装并实现了插件restful_身份验证 我的申请在很大程度上是公开的,除了写评论的情况 因此,我有一个reviews\u controller.rb,但我唯一想关心用户是否登录的时间是在他们提交特定操作add\u review时 add_review是vendor_controller.rb上的一个操作,因为表单显示在vendors/show上。然后它重定向回vendor/show以显示更新(考虑将其更改为ajax) 如果此人未登录,我希望它重定向到登录/注册页

我已经从technoweenie安装并实现了插件restful_身份验证

我的申请在很大程度上是公开的,除了写评论的情况

因此,我有一个reviews\u controller.rb,但我唯一想关心用户是否登录的时间是在他们提交特定操作add\u review时

add_review是vendor_controller.rb上的一个操作,因为表单显示在vendors/show上。然后它重定向回vendor/show以显示更新(考虑将其更改为ajax)

如果此人未登录,我希望它重定向到登录/注册页面

restful_身份验证的说明显示了在控制器级别应用include AuthenticatedSystem,但我不想在该控制器中使用其他操作进行身份验证


如何执行此操作?

将经过身份验证的系统模块包括在您需要它的控制器中(如果您需要用于多个控制器,则包括ApplicationController),然后使用仅应用于您想要的操作的before_筛选器,例如:

class VendorsController < ApplicationController
  include AuthenticatedSystem
  before_filter :login_required, :only => [:add_review]
end
class VendorsController[:add\u review]
结束

在您需要的控制器中包括经过身份验证的系统模块(如果您需要用于多个控制器,则包括ApplicationController),然后使用仅应用于所需操作的before_筛选器,例如:

class VendorsController < ApplicationController
  include AuthenticatedSystem
  before_filter :login_required, :only => [:add_review]
end
class VendorsController[:add\u review]
结束

我恳求您使用restful创建操作,而不是您自己的add\u review操作。阅读有关restful路由的更多信息:

我恳请您使用restful创建操作,而不是您自己的add\u review操作。有关restful路由的详细信息,请访问:

before\u筛选器也可以执行:except参数,如果您希望某个操作不具有身份验证。意思是:except=>[:未经身份验证的控制器]?:except=>[:未经身份验证的\u操作]before筛选器应用于控制器内的所有操作(以及该控制器子类中的控制器内的操作。):only/:except指定操作以使筛选器更具体。使用api.rubyonrails.org查找更多信息,然后\u筛选器还可以执行:except参数,如果您希望某个操作不具有身份验证。意思是,:except=>[:non-authenticated controller]?:except=>[:non_authenticated_action]一个before筛选器应用于控制器内的所有操作(以及该控制器子类的控制器内的操作)。the:only/:except指定操作以使筛选器更具体。使用api.rubyonrails.org查找更多信息您的意思是使用现有的“创建”吗…我查看了路由部分…我不清楚应该查找什么。谢谢。是的,我的意思是使用现有的create。在ReviewController中使用add_review操作违反规范,比简单使用create操作更痛苦。因此这可能很愚蠢,但我从内部调用add_review操作vendors_controller.rb(一个类似功能的教程,据说是这样做的)…因此我不在ReviewController中,因为该页面是供应商的视图。那么,请执行嵌套的restful路由。查看路由指南以了解我的意思。您的意思是使用现有的“创建”…我查看了路由部分…我不清楚应该查找什么。谢谢。是的,我的意思是使用现有的create。在ReviewController中使用add_review操作违反规范,比简单使用create操作更痛苦。因此这可能很愚蠢,但我从内部调用add_review操作vendors_controller.rb(一个类似功能的教程,据说是这样做的)…因此我不在ReviewController中,因为该页面是供应商的视图。好的,那么,执行嵌套的restful路由。看看路由指南,了解我的意思。