💎 로그인필터
package edu.kh.mung.common.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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import edu.kh.mung.member.model.dto.Member;
@WebFilter(filterName = "loginFilter", urlPatterns = {"/myPage/*","/Administrator/*"})
public class LoginFilter implements Filter {
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("--- 로그인 필터 생성 ---");
}
public void destroy() {
System.out.println("--- 로그인 필터 파괴 ---");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse resp = (HttpServletResponse)response;
HttpSession session = req.getSession();
Member loginMember = (Member)session.getAttribute("loginMember");
if(loginMember == null) {
session.setAttribute("message", "로그인후 이용해주세요 뿌우~.~");
resp.sendRedirect("/");
} else {
chain.doFilter(request, response);
}
}
}
url패턴에 로그인을하지 않으면 이용할수없는 url주소를 넣어놔 비로그인 접속시도시
session.setAttribute("message", "로그인후 이용해주세요"); 세션 스코프에 담아 메세지를 출력해준다
🚀 중요한건 세션에 담아서 메세지를 띄우게되면 서버가 종료하긴전까지 계속 남아있기때문에 footer부문에 넣어둔
메세지 띄우는 스크립트부분에 <c:remove var="message" scope="session"/> 추가하여 강제적으로 한번만 메세지를
띄어준후 세션에서 없애주면 강제적인 1회성 메세지를 띄울수있게된다!!
<c:if test="${!empty message}">
<script>
alert("${message}");
</script>
<c:remove var="message" scope="session"/>
</c:if>