我遇到問題。我想阻止用戶訪問頁面而無需在jsf2中登錄。當用戶直接將受限制的頁面URL寫入瀏覽器時,他/她不應該看到該頁面。這就像上面的情況一樣,他/她必須被重定向到登錄頁面。我怎樣才能以編程方式做到這一點?防止訪問受限制的頁面而無需在Jsf2中登錄
4
A
回答
12
這取決於你如何已編程登錄。您似乎正在使用本地認證,其中您將登錄用戶設置爲會話作用域管理bean的屬性。因爲使用Java EE提供的容器管理登錄,阻止訪問受限制的頁面已被考慮在內。
假設你都限制在某個URL圖樣頁面,如/app/*
,/secured/*
等和你的會話範圍的bean有管理bean的名字user
,那麼你可以使用一個filter作業。實施doFilter()
方法如下:
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession(false);
User user = (session != null) ? (User) session.getAttribute("user") : null;
if (user == null || !user.isLoggedIn()) {
response.sendRedirect("/login.xhtml"); // No logged-in user found, so redirect to login page.
} else {
chain.doFilter(req, res); // Logged-in user found, so just continue request.
}
}
地圖這個過濾器上覆蓋受限頁面的URL模式。
此外,您需要確保您已禁用這些頁面上的瀏覽器緩存,否則最終用戶在註銷後仍能夠從瀏覽器緩存中看到它們。你也可以爲此使用一個過濾器。你甚至可以在同一個過濾器中完成。另請參閱Browser back button doesn't clear old backing bean values。
1
你試圖寫一個過濾器...你可以攔截所有的呼叫檢查用戶訪問的網頁如果沒有可以將用戶重定向到登錄頁面...
相關問題
- 1. 訪問任何頁面而無需通過登錄頁面
- 2. 受登錄保護的頁面不需要登錄訪問
- 3. 如何防止在Django中成功登錄後訪問登錄頁面?
- 4. 如果用戶登錄,我的受限PHP頁面不限制訪問
- 5. 限制用戶登錄後訪問登錄頁面php
- 6. Drupal - 受限內容訪問顯示用戶的登錄頁面
- 7. 防止未登錄的成員訪問某個頁面
- 8. 如何防止用戶訪問一個網頁,而不登錄
- 9. 限制用戶無需使用javascript登錄即可訪問頁面
- 10. Orchard:受限訪問頁面
- 11. 如何讓未登錄的用戶只訪問一次受限制的頁面?
- 12. TYPO3:404用於受限訪問頁面而不是登錄表單
- 13. 如何限制訪問Magento中未登錄用戶的頁面
- 14. 受登錄過濾器限制的頁面仍可被其他用戶訪問
- 15. 如何防止登錄用戶訪問登錄頁
- 16. 防止其他登錄用戶訪問'編輯'頁面
- 17. 如何訪問活動管理頁面而無需在rails中登錄?
- 18. JSF ServletFilter登錄時對受限頁面的限制
- 19. ASP在不同的訪問級別和受限制的訪問頁面上進行安全的用戶登錄
- 20. 限制FatFractal登錄訪問
- 21. 限制登錄訪問wp?
- 22. 限制訪問帶證書的Laravel登錄頁面
- 23. 限制訪問與Facebook登錄特定的WordPress頁面
- 24. Facebook無限期無限登錄頁面
- 25. 無法訪問登錄頁面
- 26. 如何限制用戶無需登錄即可進入頁面
- 27. CURL訪問需要從不同頁面登錄的頁面
- 28. Cakephp登錄頁面訪問
- 29. 限制通過Facebook訪問Wordpress頁面登錄
- 30. 如何限制通過ip訪問ActiveAdmin登錄頁面?