가장 원시적인 방법으로 하는 방법을 소개하고자 한다. 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;
}
간단하게 설명해보자면, 현재 로그인이 되어 있지 않거나 회원의 상태가 관리자가 아닌 경우 권한이 없다는 메세지와 함께 로그인 페이지로 이동한다.