使用Devise强制用户注销

时间:2013-12-13 05:14:55

标签: ruby-on-rails devise

我有一个控制器过滤器,如果用户的帐户已过期,应该注销用户,但我无法找到一种简单的方法。

我试过了:

if user_signed_in? && current_user.status == 'expired'
  redirect_to destroy_user_session_path
end

但上述方法不起作用,因为Devise想要在注销路径上执行DELETE操作,因此您不能只重定向到它。

1 个答案:

答案 0 :(得分:5)

<强> active_for_authentication?

在对用户进行身份验证后,在每个请求中,Devise通过调用model.active_for_authentication?来检查您的模型是否处于活动状态。其他设计模块会覆盖此方法。例如,:确认覆盖.active_for_authentication?如果您的模型得到确认,则仅返回true。

您自己覆盖此方法,但如果您这样做,请不要忘记调用super:

def active_for_authentication?
  super && special_condition_is_valid?
end

查看documentation以了解更多详情和示例。这个doc也会对您有所帮助。