|
@@ -0,0 +1,57 @@
|
|
|
+package com.lovecoding.study.filter;
|
|
|
+
|
|
|
+import com.lovecoding.study.domian.User;
|
|
|
+
|
|
|
+import javax.servlet.*;
|
|
|
+import javax.servlet.annotation.WebFilter;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.servlet.http.HttpSession;
|
|
|
+import java.io.IOException;
|
|
|
+
|
|
|
+@WebFilter("/*")
|
|
|
+public class SessionFilter implements Filter {
|
|
|
+
|
|
|
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
|
|
+
|
|
|
+ HttpServletRequest req = (HttpServletRequest) servletRequest;
|
|
|
+ HttpServletResponse resp = (HttpServletResponse) servletResponse;
|
|
|
+ req.setCharacterEncoding("utf-8");
|
|
|
+ resp.setContentType("text/html; charset=utf-8");
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 我们在这里增加判断 有些页面是不需要鉴权的
|
|
|
+ * 比如说 登陆 注册 都不需要鉴权
|
|
|
+ */
|
|
|
+ String requestURI = req.getRequestURI();
|
|
|
+
|
|
|
+ String[] urls = {"/login.jsp", "/user", "/css/login.css", "/css/register.css"};
|
|
|
+ for ( String url : urls ) {
|
|
|
+ if (requestURI.contains(url)) {
|
|
|
+ filterChain.doFilter(servletRequest, servletResponse);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 我们在这里取出 用户的 Session对象
|
|
|
+ */
|
|
|
+ HttpSession session = req.getSession(true);
|
|
|
+ User user = (User) session.getAttribute("user");
|
|
|
+ if ( user == null ) {
|
|
|
+ //用户未登录
|
|
|
+ session.setAttribute("error", "请登陆后操作!!!!!!!");
|
|
|
+ resp.sendRedirect(req.getContextPath() + "/login.jsp");
|
|
|
+ } else {
|
|
|
+ //能查到 Session 里的 User对象 是 已经登陆的了
|
|
|
+ filterChain.doFilter(servletRequest, servletResponse);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public void init(FilterConfig filterConfig) throws ServletException {
|
|
|
+ }
|
|
|
+ public void destroy() {
|
|
|
+ }
|
|
|
+}
|