为什么清理人员会检查signed_in?

时间:2016-05-02 17:01:05

标签: ruby-on-rails clearance

清理警卫的例子似乎都检查signed_in?。这让我感到困惑,因为看起来signed_in?似乎不应该设置为true,直到用户通过了后卫。我认为警卫的全部意义是防止登场。

class EmailConfirmationGuard < Clearance::SignInGuard
  def call
    if unconfirmed?
      failure("You must confirm your email address.")
    else
     next_guard
    end
  end

  def unconfirmed?
    signed_in? && !current_user.confirmed_at
  end
end

1 个答案:

答案 0 :(得分:1)

如果用户是$student->id ,我想不出你想要运行防护堆栈的原因,所以我不确定。我认为这可能是实施的意外。

创建会话时,我们这样做:

nil

如果def create @user = authenticate(params) sign_in(@user) do |status| if status.success? redirect_back_or url_after_create else flash.now.notice = status.failure_message render template: "sessions/new", status: :unauthorized end end end 返回authenticate,我们仍然会进入堆栈。我们应该考虑不这样做。如果您在清除存储库本身上打开一个问题,我们可以将其视为Clearance 2.0的更改