我的web應用程序有一個用戶通過JSP登錄的安全區域。 JSP將用戶名和密碼發送給一個servlet,然後該servlet檢查用戶憑證是否有效。如果它們有效,那麼用戶被定向到安全資源。我怎樣才能確保用戶不能只在沒有首先驗證的情況下導航到安全資源?確保用戶在Java Web App中被驗證
回答
一種常見的方法是設置一個令牌在用戶的會話即
session.setAttribute("loggedIn", "true");
甚至
session.setAttribute("loggedInUser", "someUserName");
,檢查應確保在任何網頁上。一個好的策略是使用附加到要保護的任何頁面的servlet篩選器執行檢查。如果他們沒有通過檢查,過濾器可以重定向到登錄頁面。此外在這裏看到:http://java.sun.com/products/servlet/Filters.html
這是使用過濾器進行身份驗證也是一個很好的文章:http://www.developer.com/java/ent/article.php/3467801
爲什麼這種方法比容器管理的認證更好? – erickson 2008-12-09 01:57:43
這取決於你的需求。對於一個簡單的應用程序來說,這很容易,但cma是針對更高級需求的一個強健的解決方案。一如往常,你的里程可能會有所不同 – mtruesdell 2008-12-09 16:14:57
確保人們總是通過一個單一的servlet,其中該servlet dispataches請求到JSP訪問你的應用程序,並返回由此產生的對瀏覽器的響應。這樣,您將始終掌控發生的情況,因爲有一個入口點。
一個不同的方法是有一個會話變量(服務器端,甚至在一個cookie中),它被每個需要驗證的JSP檢查。
什麼回合使用安全contraint在你的web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure</web-resource-name>
<url-pattern>/secure/*</url-pattern>
</web-resource-collection>
安全真的是很難得到正確。比你通常想象的要多得多。使用框架(想起Acegi),或者web.xml中的標準「」部分作爲LenW pointed out是必須的!至少使用過濾器來處理安全性的授權部分。
我真的不喜歡使用單一入口點的解決方案(如suggested by Rolf)。在我看來,就像對你的架構施加了一個人爲約束。在webapp中有多個servlet是有很多好理由的。不管你做什麼,都不要使用在每個頁面上都依賴手動代碼的技術(比如:每個JSP都以「if user_authentified ...」開頭)。你會忘記把它放在什麼地方...
- 1. 確保用戶在角度驗證
- 2. 驗證HTTP POST並確保數據不被用戶
- 3. 如何驗證密碼並確保用戶名未被使用?
- 4. 在java web-app中進行身份驗證的任何庫?
- 5. LightSwitch Web App中的表單身份驗證和活動用戶
- 6. 兩步驗證 - 確保用戶仍在進一步的會話中驗證
- 7. 對我的Java Web App使用Google身份驗證
- 8. 在java中驗證用戶輸入
- 9. 在java中驗證用戶輸入?
- 10. 在Java(Scanner)中驗證用戶輸入?
- 11. 如何使用Google App Engine + Java驗證用戶,密碼?
- 12. REST Api每個用戶在App中的身份驗證
- 13. JDO Google App Engine驗證用戶
- 14. RESTEasy中的用戶登錄驗證java
- 15. 在url中驗證用戶
- 16. 來自web-app的Api-App身份驗證
- 17. 用戶驗證 - Play Framework,Java
- 18. 用於Web用戶身份驗證的Java選項
- 19. 身份驗證的用戶保護Web API操作
- 20. 用戶模型驗證失敗,如何確保使用「舊」值
- 21. 從AAD身份驗證中Azure Web App註銷
- 22. 從java程序驗證用戶 - java
- 23. 在Twitter4j中驗證用戶?
- 24. Google App Engine +驗證
- 25. Java EE中的Web Service身份驗證
- 26. 驗證Java Web Start客戶端應用程序
- 27. Java客戶端調用Windows集成身份驗證Web服務
- 28. Web用戶控件和驗證
- 29. 如何驗證用戶? (Android/Java/Symfony)
- 30. 驗證用戶的Web Api OAuth身份驗證
我認爲聲明式身份驗證不是應用程序的選項(通過部署描述符進行容器管理的身份驗證)。 – McDowell 2008-12-07 22:10:33