通关守卫的例子似乎都在检查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