[SPRING] URL을 통한 페이지 접근을 막기

살찐성인·2022년 11월 20일

가장 원시적인 방법으로 하는 방법을 소개하고자 한다. Spring Security를 이용하면 좀 더 세련되고 쉽게 사용자 권한을 부여하는 방향으로도 구현할 수 있지만... 이 방법도 나름 투박한 맛이 있다고 생각한다.

이를테면, 만들고자 하는 웹페이지가 관리자페이지의 회원관리 탭의 url이
http://www.test.com/admin/user 라고 생각해보자.
당연히 이 url은 관리자 이외의 일반 회원이 접근하는 것을 막아야 할 것이다.

코드 몇줄로 간단하게 해결할 수 있다.

@GetMapping("/admin/user")
    public ModelAndView showAdminPage
    (ModelAndView modelAndView,
     HttpSession httpSession,
     HttpServletRequest requese
    ){
        logger.info("관리자  일반페이지 접속 시도 {}", modelAndView);
        User user = (user)httpSession.getAttribute("loginUser");

        if(ObjectUtils.isEmpty(user) || !"Y".equals(user.getAdminCheck())){
            String errorMsg = "권한이 없습니다";
            modelAndView.addObject("errorMsg", errorMsg);
            modelAndView.addObject("redirectUrl", "/user/loginView");
            modelAndView.setViewName("/common/error");
            logger.warn("권한이 없는 사용자의 관리자 페이지 접근 > IP address : {}", request.getRemoteAddr());
            return modelAndView;
        }

간단하게 설명해보자면, 현재 로그인이 되어 있지 않거나 회원의 상태가 관리자가 아닌 경우 권한이 없다는 메세지와 함께 로그인 페이지로 이동한다.

0개의 댓글