내정보를 본인세션으로만 들어가도록 하는 filter 적용

최주영·2023년 6월 9일
0

세미프로젝트

목록 보기
4/11
package com.web.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.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import com.web.member.model.vo.Member;


@WebFilter(servletNames= { // (주소로 검색해서 들어갔을 때 -> 로그인한 세션정보가 본인것만 볼 수 있음)
		"memberView"  // url 매핑이 아닌, 서블릿 이름으로 매핑시켰음 (매핑대상은 밑에 코드있음)
})
public class CheckAthunticate extends HttpFilter implements Filter {
       

    public CheckAthunticate() {
        super();
        // TODO Auto-generated constructor stub
    }


	public void destroy() {
		// TODO Auto-generated method stub
	}


	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		HttpSession session = ((HttpServletRequest)request).getSession();
		Member loginMember=(Member)session.getAttribute("loginMember");
		if(loginMember==null|| !loginMember.getUserId().equals(request.getParameter("userId"))){
			request.setAttribute("msg", "잘못된 접근입니다.");
			request.setAttribute("loc", "/");
			request.getRequestDispatcher("/views/common/msg.jsp").forward(request, response);
		
		}else {
			chain.doFilter(request, response);
		}
		
	}

	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}
  • 밑에는 매핑시킨 서블릿
package com.web.member.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.web.common.AESEncryptor;
import com.web.member.model.vo.Member;
import com.web.member.service.MemberService;

@WebServlet(name="memberView", urlPatterns="/member/memberView.do") 
// name="memberView" => 필터에서 적용시킨 서블릿 이름
public class MemberViewSerlvet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public MemberViewSerlvet() {
       
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 회원정보를 보여주는 화면으로 이동
		// (회원정보 : 현재 DB, 세션에 저장되어있음) -> 이것으로 처리 가능함
		String userId=request.getParameter("userId");

		System.out.println(userId);
		
		// 1. DB에 로그인한 회원의 정보를 가져와서 화면에 전달.
		Member m = new MemberService().selectByUserId(userId);
		
		try {
			m.setEmail(AESEncryptor.decryptData(m.getEmail())); // 이메일 복호화해서 화면에 저장
			
		}catch(Exception e) {
			
		}
		
		try {
			m.setPhone(AESEncryptor.decryptData(m.getPhone())); // 핸드폰번호 복호화해서 화면에 저장
			
		}catch(Exception e) {
			
		}
		
		request.setAttribute("infoMember",m);
		// 2. 화면에서 전달받는 회원데이터 출력
		
		request.getRequestDispatcher("/views/member/memberView.jsp")
		.forward(request, response);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글