package com.cbb.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Component;
/**
* 这是一个过滤器,在用户没有登录的情况下,不可以访问内部页面,必须登录后才可以访问
*
* @author 陈斌斌
* @Date 2022年5月11日 09点25分
*
*/
@Component
public class LoginFilter implements 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;
HttpSession session = req.getSession();
// session.setAttribute("键", "值"); 登录成功保存用户信息后,在过滤器取值,如果有用户登录,进行通过,否则拦截
Object login = session.getAttribute("uname");
String url = req.getRequestURI();
// 静态的css文件,js文件,以.jpg,.png结尾的图片放行
if (url.endsWith(".css") || url.endsWith(".js") || url.endsWith(".jpg") || url.endsWith(".png")) {
chain.doFilter(req, res);
return;
} //
// login.html是首页html ,selLogiName是登录的映射名,找回密码,重置密码,验证码,注册页面等页面与映射名,进行放行
Boolean isTrue = url.indexOf("login.html") > 0 || url.indexOf("selLoginName") > 0 || url.indexOf("pwd.html") > 0
|| url.indexOf("yzm.html") > 0 || url.indexOf("sendVerification") > 0
|| url.indexOf("resetPwd.html") > 0 || url.indexOf("seleVerification") > 0
|| url.indexOf("updatePwd") > 0 || url.indexOf("cleanVerifcat") > 0 || url.indexOf("zc.html") > 0
|| url.indexOf("createUser") > 0;
if (isTrue) {
chain.doFilter(req, res);
return;
}
if (login != null) {
chain.doFilter(req, res);
} else {
res.sendRedirect("login.html");
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}