我的JSF應用程序將任何未登錄的用戶重定向到登錄頁面。當用戶登錄時,我希望應用程序重定向到用戶最初在瀏覽器的地址欄中輸入的頁面。但我不知道如何訪問用戶最初輸入的url,因爲他被自動重定向到我在web.xml中配置的登錄頁面。JSF 2.0:如何獲取在瀏覽器地址欄中輸入的URL
回答
容器管理的安全性沒有任何API提供的設施。最好的辦法是由Filter
類做大致是這樣的,以取代<login-config>
:
HttpServletRequest httpreq = (HttpServletRequest) request;
HttpServletResponse httpres = (HttpServletResponse) response;
if (httpreq.getUserPrincipal() == null) {
httpreq.getSession().setAttribute("from", httpreq.getRequestURI());
httpres.sendRedirect("login.jsf");
} else {
chain.doFilter(request, response);
}
,然後在登錄的事情:
request.login(username, password);
externalContext.redirect((String) request.getSession().getAttribute("from"));
我只是挖了這個答案備份,思考[這個問題]的過濾器(http://stackoverflow.com/questions/4413407/)。很好的答案,當然。它真的很糟糕,沒有API - 這似乎是一個常見的用例。我很好奇:如果你從'web.xml'中刪除'
@Matt:是的,它會工作。它只是新的Servlet 3.0程序化替換,它與'
如何在部署描述符中設置login-config以使其正常工作?如果我刪除表單身份驗證,則Web瀏覽器將request.userPrincipal設置爲緩存值,因此(httpreq.getUserPrincipal()== null)將爲false。如果我打開表單身份驗證,則自從容器接管後,根本不運行該過濾器。 – 2011-01-28 09:40:28
- 1. Java HttpServletRequest在瀏覽器中獲取URL地址欄
- 2. PHP在瀏覽器地址欄中獲取地址
- 3. 獲取用戶在瀏覽器的地址欄中輸入的真實url地址
- 4. 如何獲取C++中瀏覽器地址欄的內容?
- 5. 如何從瀏覽器地址欄獲取網址?
- 6. 如何閱讀在瀏覽器地址欄中輸入的網址?
- 7. 如何隱藏瀏覽器地址欄中的完整URL
- 8. 隱藏瀏覽器中的地址欄或隱藏地址欄中的url
- 9. 如何從ReactJS(服務器URL)中的瀏覽器獲取URL地址
- 10. 使用C#和MVC從瀏覽器地址欄中讀取URL
- 11. 獲取PHP中的頂部框架(瀏覽器中的地址欄)URL?
- 12. Android瀏覽器地址欄
- 13. 如何從瀏覽器(Mozilla/IE)使用C#獲取URL地址?
- 14. 如何使用java程序處理輸入瀏覽器地址欄的網址?
- 15. ProxyPass&ProxyPassReverse - 從瀏覽器地址欄獲取原始網址
- 16. 瀏覽地址欄
- 17. 要獲取/複製輸入到任何瀏覽器的地址欄中的網址
- 18. 用於瀏覽器地址欄的AutoHotKey用戶輸入
- 19. 錯誤的瀏覽器地址欄中的URL路徑名
- 20. 如何隱藏在Android的Chrome瀏覽器的地址欄中
- 21. 獲取URL從地址欄
- 22. iFrame文檔中的Javascript - 如何獲取瀏覽器地址欄位置?
- 23. 如何獲取用戶在C#中的瀏覽器中輸入的url?
- 24. 如何在URL更新時停止移動瀏覽器中的地址欄
- 25. 在Android瀏覽器上顯示瀏覽器地址欄
- 26. Android獲取瀏覽器地址
- 27. 隱藏瀏覽器的地址欄
- 28. 從谷歌瀏覽器的地址欄中獲取文本(不是網址)
- 29. 使用JSF 2.0的瀏覽器中的URL不正確
- 30. 如何在瀏覽器地址欄中使用Laravel命令?
所以,你正在使用容器管理的安全性,如'j_security_check'? – BalusC 2010-11-05 11:06:32
是的,我正在使用容器管理的安全性。但是在登錄時,我使用HttpServletRequest.login(用戶名,密碼)而不是j_security_check。 – Theo 2010-11-05 11:09:57
提示,使用像@ @ BalusC'這樣的@ @暱稱來通知其他人關於不屬於他們的帖子的評論。否則,你要看是否會在後面回顧主題(通常不會)。另見http://meta.stackexchange.com/questions/43019/how-do-comment-replies-work – BalusC 2010-11-05 12:10:36