使用Devise,如何自定义失败的身份验证?

时间:2018-03-27 22:47:50

标签: ruby-on-rails ruby ruby-on-rails-4 devise

我有一个使用Devise来验证操作的控制器。我喜欢在除一个操作之外的每个操作上使用401响应的默认行为。我想继续提出请求,但提供不同的回复机构。

我可以提供或覆盖哪种方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

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

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

或者,如果您只想更改页面的某个部分,可以使用user_signed_in?在视图中也是如此

- if user_signed_in?
  .classyclass You're signed in
- else
  .classyclass You're not signed in

如果这就是你的意思......