我有一個Rails論壇產品,位於我的客戶的子域下(即http://forum.customer.com)。他們的主要網站有一個CMS和一個認證系統,而我的論壇產品有一個單獨的認證系統。在這些系統中是否有一種優雅的方式來「交叉簽名」?我想要一個已經登錄到主CMS的人無縫地(儘可能)轉換到我的產品中。在Rails中在論壇和主CMS之間共享認證
1
A
回答
0
這一切都取決於主站點如何跟蹤用戶的會話。
這通常使用cookie來完成;我只是假設它是。瀏覽器將這個Cookie 與存儲的域名相關聯,並將其重新附加到該域名或其子域的任何新請求。
您需要檢查cookie是否附加到customer.com
域,而不是例如www.customer.com
。這是因爲forum.customer.com
是前者的子域,而不是後者。你在不會在後一種情況下在你的論壇軟件中看到cookie。 CMS軟件可以控制cookie連接到哪個確切域。
大多數瀏覽器都有一個選項來顯示爲特定站點存儲哪些cookie。例如,Firefox在右鍵菜單中有一個「頁面信息」選項。在Chrome中,您可以點擊Ctrl + Shift + 我找到開發者工具,並在「存儲」標籤下查找。
該Cookie可能包含以下之一:
- 實際數據,如用戶名。
- CMS可以在其數據庫中查找的會話ID,從而檢索用戶名。
在任何一種情況下,它也可能包含鹽漬散列,這可以防止用戶篡改cookie的數據。
您可以通過名稱在Rails中使用簡單的cookies[:something]
從控制器中訪問Cookie。這記錄在ActionController::Cookies(其混入ActionController::Base
)中。
一旦你有了cookie的數據,你就必須模仿你的CMS做的任何事情。您可能必須(按順序):
- 通過(重新)對cookie數據應用散列函數並將其與cookie中包含的散列進行比較,驗證cookie的完整性。
- 連接到CMS數據庫。
- 可能查詢會話ID。
- 查詢用戶的配置文件。
相關問題
- 1. 在vBulletin論壇和status.net微博平臺之間共享會話
- 2. rails和node.js與redis商店之間的共享認證
- 3. 在CMS之間共享登錄信息(WordPress和phpBB)
- 4. 在Go主機之間共享變量
- 5. Rails在視圖之間共享javascript
- 6. 在表單之間共享UI驗證
- 7. 共享Cookie和/或認證
- 8. 在Rails中控制器和幫助器之間共享變量
- 9. 在Erlang和Rails(和mongodb)之間共享模型定義
- 10. iOS在主應用程序和共享分機之間共享.h文件
- 11. 在類之間共享ListView
- 12. 在EAR之間共享JSP
- 13. 在AngularFire2/Firebase和NodeJS之間共享AccessToken
- 14. 在AppEngine和Android之間共享數據
- 15. 在Flex和AIR之間共享代碼
- 16. 在bash和php之間共享數據
- 17. 在AddViewController和DetailViewController之間共享代碼
- 18. 在PowerShell和C#之間共享變量
- 19. 在Eclipse和Netbeans之間共享項目
- 20. 在NSDocument和UIDocument之間共享代碼
- 21. 在iPhone和PC之間共享文件
- 22. 在html和javascript之間共享部分
- 23. stdin,stdout和stderr在?之間共享?
- 24. 在webrequest和webbrowser之間共享cookie
- 25. 在Matlab和C之間共享數據
- 26. 在Ruby和PHP之間共享會話
- 27. 在direct3d和opengl之間共享紋理?
- 28. 在NSViewController和NSTableViewDelegate之間共享方法
- 29. 在MVVM和MVC之間共享模型?
- 30. 在python和php之間共享變量