如何在Devise登录前调用验证?

时间:2011-06-02 14:11:11

标签: ruby-on-rails ruby callback devise validation

我想在帐户创建日期为2010年的情况下禁用用户授权。

如何使用回调执行此任务以及如何将其与Devise一起使用?

2 个答案:

答案 0 :(得分:0)

你在Devise中使用lockable策略吗?

如果是这样,在登录后重定向到的控制器中,你可以添加一个执行如下操作的before_filter:

current_user.lock_access! if current_user && current_user.created_at.year == "2010"

您还需要手动签署用户,可能是这样的:

sign_out current_user

答案 1 :(得分:0)

我认为你的问题有两部分:

  1. 根据某些条件(例如帐户创建日期),您要授权用户执行某些操作

  2. 您想使用Devise进行身份验证

  3. 请注意,身份验证(您说的是您)和授权(您可以执行所请求的操作)之间存在差异,并且通常使用不同的软件实现。

    例如,您可以使用Devise进行身份验证,使用CanCan来管理授权(CanCan上的railscast:http://asciicasts.com/episodes/192-authorization-with-cancan)。

    使用CanCan,您只需允许用户根据其帐户的created_at属性执行操作,否则请调用Devise的authorize!方法。