我正在使用Clearance gem进行身份验证。我在应用程序中有一个页面,我想允许任何人来,只要他们在URL / Session中有安全令牌。他们不一定是系统中的用户。
这是否适用于Clearance。关于我应该如何进行的任何提示。最初我认为我应该覆盖require_login
和current_user
。这是一个好方法吗?
答案 0 :(得分:1)
安全令牌页面是否也允许访问已登录的用户,或所有人是否必须拥有安全令牌?
如果您必须拥有安全令牌,无论您是否使用Clearance登录,我都会通过不调用require_login
来完全避免此控制器的清除(或调用{{1如果过滤器已经在你的控制器的继承树中)。然后你可以实现自己的skip_before_action :require_login
来检查令牌并做任何你喜欢的事情。如果需要,您还可以为此控制器实现自己的before_action
。
如果页面还允许登录用户,那么我仍然会在行动前跳过清除,而是使用以下内容:
current_user
如果您想在此操作/视图中使用def require_login_or_secret_token
unless params["super_secret_security_token"] == TOKEN
require_login
else
end
,则需要覆盖current_user以返回guest对象而不是nil:
current_user