我正在開發使用RESTful作爲Web服務的Java Web應用程序。現在我想申請Apache Shiro來保護我的應用程序。其機制是:用戶登錄成功後,會將一個令牌(由用戶名,密碼和記錄時間組成)返回給客戶端。然後,每個REST請求都會附加此令牌以在服務器進行身份驗證(無需授權)。但現在我不知道如何配置來接受這一點。
順便說一句,你可以給我任何關於Shiro & RESTful集成的示例嗎?謝謝關於RESTful和Shiro集成的示例
2
A
回答
2
如果REST應用程序和Java Web應用程序是相同的webapp,那麼你只需要檢查subject.isAuthenticated()。使用沒有密碼或用戶名的會話cookie(因爲密碼可能被盜,所以傳遞密碼並不是個好主意)。
如果這兩個部件都在同一個Web應用程序中,這種行爲的大部分都是默認的。
在你的休息方法,你會碰到這樣的:
Subject subject = SecurityUtils.getSubject();
if(subject == null || !subject.isAuthenticated()) {
return 401; // Not Authorized
}
希望有所幫助。
0
除了上述的反應,您可以從您的REST服務器,後成功登錄發回一個令牌(會話ID)。然後,您的iOS/Android應用程序將需要存儲此信息,並將其發送給每個REST請求。這裏是您登錄後REST響應可以是什麼樣:
session-start-timestamp: 1394683755389,
session-timeout: 1800000,
session-id: "068C8E0E289788A7ABC5FE47B2CC0D28"
會話ID會被你的REST服務器進行維護,其TTL將重置每一個具有此ID的新請求到來時
在瀏覽器上,此ID會自動發送。對於你的情況,你會想與每個HTTP請求明確發送(這是REST請求是什麼)
希望這有助於
相關問題
- 1. Apache Shiro和Dropwizard集成
- 2. Netty/Shiro集成
- 3. Shiro與Guice集成
- 4. Shiro與Springboot集成
- 5. 關於RESTful和Action
- 6. CKEditor和elFinder集成示例
- 7. Applet和JSF集成 - 示例
- 8. Apache Shiro集成和Netty ExecutionHandler/OrderedMemoryAwareThreadPoolExecutor
- 9. Spring-Shiro集成 - HTML頁面
- 10. Shiro和Maven的例外
- 11. 關於生成svg圖表的示例
- 12. Spring集成示例
- 13. 自動生成RESTful API示例JSON
- 14. 關於集成Django和Flex的書
- 15. 關於集成java和flex的問題
- 16. 適用於集成測試的shiro配置
- 17. ASP.NET MVC和Spine.js集成示例
- 18. Cassandra Hadoop集成和Wordcount示例
- 19. WSO2 Greg和ESB集成示例
- 20. 關於RTNPARM關鍵字和用例的示例
- 21. 差RESTful設計的示例
- 22. 關於羣集實例
- 23. 關於C++/CLI和C#集成
- 24. 關於GTMMIMEDocument的示例
- 25. Spring集成示例:: Aggregator
- 26. GreendaO與Sqlcipher集成示例
- 27. ActiveMerchant集成使用示例?
- 28. ASP.net集成模式 - 示例
- 29. 貝寶集成示例
- 30. Android SSO Okta集成示例
謝謝@Stephen。是的,Java Web應用程序和REST共享同一個Web應用程序。該會話cookie上的服務器進程上的身份驗證代碼。但我的REST應用程序是一個移動應用程序,所以我不確定我可以使用會話cookie。我更喜歡使用令牌(由用戶名和密碼生成),並將其附加在每個請求上。因此,我需要重新實施身份驗證步驟,並且無法重新使用舊的身份驗證步驟。 無論如何,你的提示可能會幫助我很多,我會試試這種方式。 –