设计 - 在验证时设置范围

时间:2011-03-16 01:55:40

标签: ruby-on-rails ruby authentication devise

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

User.where(:active => true)

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

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

2 个答案:

答案 0 :(得分:14)

只需在用户模型中覆盖这两种方法,检查活动标志是否为 true

# 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

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

devise:
  failure:
    deactivated: "Luke, I'm your father and your account was locked!"

答案 1 :(得分:1)

可以使用default_scope ......但这可能会妨碍你。

为什么不覆盖设计的find_for_database_authentication方法?请参阅the wiki