设计 - 在验证时设置范围

Aus*_*tin 3 ruby authentication ruby-on-rails devise

我正在使用设计进行身份验证.如何设置登录范围?例如,假设我只想验证范围的用户:

User.where(:active => true)
Run Code Online (Sandbox Code Playgroud)

我清楚了吗?这很简单,但如果需要我可以详细说明.

(我意识到有一个可锁定的模块,但我的实际范围不适用于活跃用户,它更像是current_site.users,其中current_site基于域)

小智 14

只需在User模型中覆盖这两个方法,检查活动标志是否为:

# Called by Devise to see if an user can currently be signed in
def active_for_authentication?
  active? && super
end

# Called by Devise to get the proper error message when an user cannot be signed in
def inactive_message
  !active? ? :deactivated : super
end
Run Code Online (Sandbox Code Playgroud)

在您的devise.en.yml中,添加正确的错误消息:

devise:
  failure:
    deactivated: "Luke, I'm your father and your account was locked!"
Run Code Online (Sandbox Code Playgroud)