0

我正在使用 Clearance gem 进行身份验证。我在应用程序中有一个页面,我想允许任何人访问,前提是他们在 URL / Session 中有一个安全令牌。他们不必是系统中的用户。

这对 Clearance 可行吗?关于我应该如何进行的任何提示。最初我认为我应该覆盖require_loginand current_user。这是一个好方法吗?

4

1 回答 1

1

安全令牌页面是否也应该允许登录的人访问,还是每个人都必须拥有安全令牌?

如果您必须拥有安全令牌,无论您是否使用 Clearance 登录,那么我将通过根本不调用require_login(或者skip_before_action :require_login如果过滤器已经在控制器的继承树中则调用)来避免该控制器的 Clearance . 然后你可以实现你自己before_action的检查令牌并做你想做的任何事情。current_user如果需要,您也可以为此控制器实现自己的。

如果页面还应该允许登录用户,那么我仍然会跳过操作前的许可,而是使用如下内容:

def require_login_or_secret_token
  unless params["super_secret_security_token"] == TOKEN
    require_login
  else
end

然后,如果要current_user在此操作/视图中使用,则需要覆盖 current_user 以返回来宾对象而不是 nil:

def current_user
  super || Guest.new
end
于 2016-03-04T11:35:47.990 回答