Ruby on rails 使用Desive,如何自定义失败的身份验证?

Ruby on rails 使用Desive,如何自定义失败的身份验证?,ruby-on-rails,ruby,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Ruby On Rails 4,Devise,我有一个控制器,它使用Desive来验证操作。我希望默认的行为是,除了一个动作之外,每个动作都使用401。我想继续请求,但提供不同的响应主体 我应该提供或覆盖什么方法来完成此操作?首先,您需要跳过要在其上执行此操作的页面上的标准身份验证 before_filter :authenticate_user!, except: [:mydifferentcontroller] 然后,您需要为控制器添加一些逻辑,以使您获得备用响应 def mydifferentcontroller unless

我有一个控制器,它使用Desive来验证操作。我希望默认的行为是,除了一个动作之外,每个动作都使用401。我想继续请求,但提供不同的响应主体


我应该提供或覆盖什么方法来完成此操作?

首先,您需要跳过要在其上执行此操作的页面上的标准身份验证

before_filter :authenticate_user!, except: [:mydifferentcontroller]
然后,您需要为控制器添加一些逻辑,以使您获得备用响应

def mydifferentcontroller
  unless user_signed_in?
    ## add redirect_to if you want to send them to an entirely different page or whatever change in logic can go in here 
  end
end
或者,如果您只想更改页面的某个部分,您可以使用已登录的用户?在视图中也是如此

- if user_signed_in?
  .classyclass You're signed in
- else
  .classyclass You're not signed in
如果这就是您的意思……

您可以并且可以根据您的要求编辑响应部分。您还可以覆盖单个控制器的特定方法,而不是生成所有。