ruby-on-rails – 过滤能够使用Devise登录的用户

栏目: Ruby · 发布时间: 5年前

内容简介:我有一个使用Devise进行身份验证的Rails应用程序.用户属于经销商,我希望阻止属于残障经销商的用户能够登录.是否有一种直接的方式来扩展Devise的身份验证查找器,以便它不包括已删除的经销商的用户?也许在User上使用命名范围?干杯

我有一个使用Devise进行身份验证的Rails应用程序.用户属于经销商,我希望阻止属于残障经销商的用户能够登录.

是否有一种直接的方式来扩展Devise的身份验证查找器,以便它不包括已删除的经销商的用户?也许在User上使用命名范围?

干杯

特里斯坦

事实证明我需要做的就是覆盖我的用户模型的find_for_authentication方法:

class User < ActiveRecord::Base
  ...

  # Intercept Devise to check if DealershipUser's Dealership is active
  def self.find_for_authentication(conditions)
    user = super
    return nil if user.is_a?(DealershipUser) && user.dealership.deleted?
    user
  end

  ...
end

>通过调用super以正常方式查找用户.

>我正在使用STI,所以我检查用户是DealershipUser,然后检查经销商是否被删除(acts_as_paranoid).

>返回用户.

这是我的方案的一个非常具体的解决方案,但您可以覆盖find_for_authentication,但是如果您愿意,之后您将返回用户.

翻译自:https://stackoverflow.com/questions/4141094/filtering-users-who-are-able-to-sign-in-with-devise


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Effective C++

Effective C++

[美]Scott Meyers / 侯捷 / 电子工业出版社 / 2006-7 / 58.00元

《Effective C++:改善程序与设计的55个具体做法》(中文版)(第3版)一共组织55个准则,每一条准则描述一个编写出更好的C++的方式。每一个条款的背后都有具体范例支撑。第三版有一半以上的篇幅是崭新内容,包括讨论资源管理和模板(templates)运用的两个新章。为反映出现代设计考虑,对第二版论题做了广泛的修订,包括异常(exceptions)、设计模式(design patterns)......一起来看看 《Effective C++》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具