2013-01-21 27 views
0

我正在使用devise,Omniauth和CanCan 2.0進行身份驗證/授權。問題是,CanCan鎖定了應用程序,並阻止用Omniauth登錄。使其工作所需的最小權限集是多少?Devise/CanCan 2.0/Omniauth:Omniauth登錄需要什麼權限

這似乎工作:

can [:new, :create, :destroy], "devise/sessions" 
can [:new, :create, :edit], "devise/passwords" 
can :access, "devise/registrations" 
can :access, :omniauth_callbacks 

但可能是過於寬鬆?

+0

這是在這[SO帖子]中解釋(http://stackoverflow.com/questions/12131079/omniauth-devise-open-id-cancan-whats-what-and-when-do-i-use-which - 溶液/ 12131386#12131386)。 –

+0

感謝您的輸入。實際上,一切正常,包括Omniauth(通過寶石'omniauth-twitter'和'omniauth-google-oauth2')。唯一的問題是,我需要允許訪客訪問所需的控制器操作,以便阻止設計。 –

回答

0

當我在過去完成像這樣的設置時,我沒有必要在Cancan能力文件中指定Devise的能力來讓Omniauth工作,因爲用戶是在Devise創建Cancan之前創建的,在here中描述的方法中。但也許你正在尋找更細粒度的東西?

+0

是CanCan 2.0還是早期版本? 2.0,AFAIK,鎖定所有控制器(請參閱https://github.com/ryanb/cancan/tree/2.0#setup)。 –

+0

哦,我明白了;我沒有意識到新版Cancan的變化。如果是這樣的話,你可以創建一個身份驗證控制器,你有你的用戶控制器(和其他你需要Cancan'd的控制器)繼承,並添加「enable_authorization」?這應該讓康德的範圍之外的設計。 –