jsp中添加過濾器,實現校驗用戶身份

我如今須要實現一個功能,就是用戶登陸前不容許訪問系統,我使用的是jsp的過濾器來實現的。html

先把filter過濾器的代碼粘出來:java

 1 package com.day8.filter;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.servlet.Filter;
 6 import javax.servlet.FilterChain;
 7 import javax.servlet.FilterConfig;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.ServletRequest;
10 import javax.servlet.ServletResponse;
11 import javax.servlet.annotation.WebFilter;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpSession;
14 
15 @WebFilter("/*")
16 public class CheckFilter implements Filter {
17 
18     public CheckFilter() {
19     }
20 
21     public void destroy() {
22     }
23 
24     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
25         HttpServletRequest req = (HttpServletRequest)request;
26         
27         if(!req.getServletPath().equals("/login")) {
28             HttpSession session = req.getSession();
29             String managername = (String)session.getAttribute("username");
30             if(managername==null) {
31                 req.setAttribute("msg", "沒有權限");
32                 req.getRequestDispatcher("error.jsp").forward(request, response);
33                 return;
34             }
35         }
36         
37         chain.doFilter(request, response);
38     }
39 
40     public void init(FilterConfig fConfig) throws ServletException {
41     }
42 
43 }

主要代碼在第24-第38行session

這裏是實現了一個通用的過濾器,對全部的請求都會用這個過濾器進行過濾,這就出現了一個問題,會把不須要過濾的頁面也進行過濾,這時就須要排除不須要過濾的請求,我這裏是把登陸請求login進行了排除jsp

校驗用戶身份是檢查session是否存在,若是不存在,就認爲用戶身份不合法,這時候就請求轉發到error.js頁面,給出錯誤的提示spa

注意第33行,這裏添加了一個return,中止後面代碼的執行,否則請求轉發後,後面還有代碼須要執行,會致使報錯:Cannot forward after response has been committedcode

 

下面我再把error.jsp的代碼貼出來:htm

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${error } <a href="login">返回</a>
</body>
</html>
相關文章
相關標籤/搜索