聲明性授權似乎需要params [:id]來進行驗證,我想使用/ profile和/ dashboard等用戶存儲在會話中而不是URL的路徑。但它打破了。關於如何在不破壞寶石本身的情況下做到這一點的任何想法?如何使用聲明式授權而不必始終將用戶標識保留爲URL中的參數?
2
A
回答
0
我使用AuthLogic,但據我所知「current_user」不會通過路由訪問。
您需要檢查,在控制器中,如果PARAMS [:ID] == 「CURRENT_USER」(作爲一個字符串),然後以此爲基礎進行一些邏輯...即:
if params[:id] == "current_user"
@user_id = current_user.id
else
@user_id = params[:id]
end
@user = User.find(@user_id)
一個非常簡單的例子,但它應該說明你將需要從自定義路由中獲取current_user的邏輯類型。您也可以將current_user的命名路由映射到它自己的控制器操作,但這不是很RESTful,並且很可能會重複您已擁有的功能。
3
聲明授權似乎 要求PARAMS [:ID]來完成其 驗證
如果你是依靠filter_resource_access
設置實例變量在控制器這是唯一真正的。您可以通過指定filter_access_to
來設置您自己的授權方案。這使您可以設置您自己的自定義方法,可以基於您喜歡的任何方式 - 會話變量,模型屬性等。
此introduction中的控制器部分說明了filter_access_to
並給出了一些示例。
1
如果您的應用程序中有用戶,爲什麼不使用身份驗證插件?我使用了Restful身份驗證,並通過一些工作完成了會話管理。對於你的問題,這個插件有一個幫助器方法current_user
,用於檢索打開的會話用戶。
我認爲它更好地依靠像寧靜的身份驗證(或AuthLogic如響應#1)插件比實現您的解決方案,但你會更清楚你的需求;)
0
相關問題
- 1. 詢問始終只請求授權,而不是在非使用授權
- 2. 使用聲明而不是角色的Web.Config授權asp.net
- 3. Authlogic和聲明式授權
- 4. Spring Security授權標籤始終爲假
- 5. 使用參數而不保留它?
- 6. Java EE中的聲明式授權
- 7. 聲明式授權 - 抓住「授權::未授權」例外
- 8. 使用聲明的自定義授權授權管理器
- 9. 將未聲明的參數保留爲默認值
- 10. 幫助使用聲明授權
- 11. if_attribute聲明授權
- 12. 將用戶標識作爲url參數安全嗎?
- 13. OAuth在標題中使用授權數據,但不在URL中
- 14. 在obj c中聲明爲未使用的標識符,即使它聲明爲
- 15. urlrewritingnet - 保留原始URL從用戶
- 16. 如何在取消授權期間獲取Facebook用戶標識
- 17. 使用授權碼授權而不使用cookie?
- 18. Authlogic與聲明的授權 - 如何顯示視圖中的用戶角色?
- 19. 聲明式授權嵌套if_attribute
- 20. 使用REXML保留DOCTYPE聲明
- 21. WebApi調用始終未授權
- 22. 使用未聲明的標識符的
- 23. 如何將字段聲明爲Microsoft SQL Server中的標識?
- 24. 類型參數聲明必須是不是類型的標識符
- 25. 泛型 - 類型參數聲明必須是不是類型的標識符
- 26. 「標識符必須聲明」使用功能
- 27. 標識符必須聲明? PLS-00201
- 28. 必須聲明PL/SQL標識符'string'
- 29. oci_execute標識必須聲明ORA-06550
- 30. PLS-00201:必須聲明標識符
具體來說,使用before_filter將User對象分配給'@ user'。然後'@ user'將被用在授權檢查中。 – 2011-10-03 20:21:50