2016-03-03 48 views
0

我正在使用Clearance gem进行身份验证。我在应用程序中有一个页面,我希望任何人都可以在URL/Session中拥有安全令牌。他们不需要是系统中的用户。允许用户使用URL令牌访问受保护的页面

这是可以与清除。我应该如何着手的任何提示。起初我以为我应该重写require_logincurrent_user。这是一个好方法吗?

回答

1

安全令牌页面是否也允许访问已登录的人,或者必须大家有有安全令牌吗?

如果您必须拥有安全令牌,无论您是否使用Clearance登录,那么我将根本不会通过调用require_login来避免此控制器的Clearance(或者如果过滤器已经调用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返回做客对象,而如果您想在此操作/视图中使用current_user,则为零:

def current_user 
    super || Guest.new 
end 
相关问题