2016-03-03 87 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 
相關問題