當我們訪問系統(tǒng)的其他頁面的時候, 需要判斷是否是登錄中的用戶, 不然我們直接輸入鏈接地址就可以直接鏈接到我們的主頁面, 即使沒有登錄. 對于這個問題的解決, 采用Filter統(tǒng)一驗證, 我們在調(diào)用的時候先調(diào)用Filter, 讓Filter判斷是否已經(jīng)登錄.
Filter統(tǒng)一驗證代碼:
- public class AuthFilter implements Filter, javax.servlet.Filter {
-
- @Override
- public void destroy() {
-
-
- }
-
- @Override
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
-
- HttpServletRequest req = (HttpServletRequest)request;
- HttpServletResponse res = (HttpServletResponse)response;
- //基于http協(xié)議的servlet
-
- //如果沒有登錄.
- String requestURI = req.getRequestURI().substring(req.getRequestURI().indexOf("/",1),req.getRequestURI().length());
-
- //如果第一次請求不為登錄頁面,則進行檢查用session內(nèi)容,如果為登錄頁面就不去檢查.
- if(!"/login.jsp".equals(requestURI) && !"/servlet/AuthImageServlet".equals(requestURI))
- {
- //取得session. 如果沒有session則自動會創(chuàng)建一個, 我們用false表示沒有取得到session則設置為session為空.
- HttpSession session = req.getSession(false);
- //如果session中沒有任何東西.
- if(session == null ||session.getAttribute("user_info")==null)
- {
- res.sendRedirect(req.getContextPath() + "/login.jsp");
- //返回
- return;
- }
-
- }
- //session中的內(nèi)容等于登錄頁面, 則可以繼續(xù)訪問其他區(qū)資源.
- chain.doFilter(req, res);
- }
- }
在web.xml中配置Filter:
- <filter>
- <filter-name>AuthFilter</filter-name>
- <filter-class>com.bjpowernode.drp.util.filter.AuthFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>AuthFilter</filter-name>
- <url-pattern>*.jsp</url-pattern>
- </filter-mapping>
-
- <filter-mapping>
- <filter-name>AuthFilter</filter-name>
- <url-pattern>/servlet/*</url-pattern>
- </filter-mapping>
這樣在沒有登錄系統(tǒng)的時候, 會自動的跳轉(zhuǎn)到我們的登錄頁面. 并且在沒有登錄的情況下, 即使鏈接到其他的頁面, 也會跳轉(zhuǎn)到登錄頁面.
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。