10/02/2018

스프링 쇼핑몰 만들기 #4. 일반 사용자와 관리자 구분

스프링 쇼핑몰 만들기

쇼핑몰에서 일반 사용자는 쇼핑몰 사이트에서 상품을 보거나, 카트에 담거나, 구입하거나, 상품 소감을 작성하는 등의 행동을 할 수 있습니다.

관리자는 일반 사용자가 할 수 있는걸 모두 할 수 있으며, 상품 등록 및 관리와 사용자 상태, 사이트의 전체적인 통계등을 확인할 수 있어야합니다.

일반 사용자용으로 사용할 새로운 아이디를 생성합니다.

테이블을 만들었을 때, verify는 인증여부였습니다. 0은 인증되지 않은 사용자이며, 0이 아니라면 인증된 사용자로 구분합니다.

이 verify컬럼이 일반 사용자와 관리자를 구분하는데에 알맞은 역할은 아니지만, 관리자 구분을 위해 새로운 컬럼을 추가하는건 현재 프로젝트의 규모를 생각하면 필수가 아니라고 생각해서 verify를 사용하기로 했습니다.

비록 여기선 이렇게(?) 했지만, 역할에 맞는 컬럼을 사용하는것을 추천합니다.

업데이트(update)문을 이용하여 관리자로 사용할 kuzuro@gmail.com 계정의 verify 값을 9로 수정했습니다.

매퍼에서, 로그인할 때 불러오는 컬럼에 verify를 추가합니다.

nav.jsp에 관리자만 볼 수 있는 코드를 추가합니다.

<c:if test="${member.verify == 9}">
<li>
 <a href="/admin/index">관리자 화면</a> 
</li> 
</c:if>

verify의 값이 9일 때만 보이는 코드입니다.

관리자 계정(kuzuro@gmail.com)으로 로그인하면 '관리자 화면'링크가 보입니다.

관리자용 페이지를 따로 만들기 위해, AdminController를 추가합니다.

지금은 따로 기능이 필요없이 화면만 띄우면 되기 때문에, 컨트롤러 내에 별다른 코드는 없습니다.

컨트롤러의 매핑대로, admin 폴더와 index.jsp파일을 생성합니다.

기존의 home.jsp와 마찬가지로 index.jsp는 헤더(header.jsp)와 네비게이션 메뉴(nav.jsp), 푸터(footer.jsp)가 공통사항이므로 admin폴더 내에 폴더를 하나 더 만들어서 관리합니다.

이제 관리자 계정(verify의 값이 9인 계정)으로 접속하면, 관리자 화면으로 이동할 수 있는 링크가 보입니다.

링크를 클릭하면, 디자인적으로 별 차이가 없지만 다른 admin/index.jsp로 접속한것을 할 수 있습니다.

일반 계정(verify의 값이 9가 아닌 계정)으로 접속하면 관리자 화면으로 갈 수 있는 링크가 보이지 않습니다. 하지만 관리자 화면으로 갈 수 있는 주소만 있으면 누구나 접속할 수 있는 문제가 있습니다.

이 문제는 다음 게시물에서 처리하겠습니다.

게시물 수정
  1. 너무 잘 만드셔서 항상 도움이 됩니다 감사합니다

    답글삭제
    답글
    1. 방문해주셔서 감사합니다. 도중에 흐지브지 끝났는데.. 부족한 부분은 이후에 업로드하겠습니다ㅠ

      삭제
  2. 제 추구하는 모델이랑 비슷해서 너무 도움이 됩니다~. 깃허브는 완성 코드가 아닌가요? uploadfileutil이나 goodsviewvo같은 파일은 빠져있네요?

    답글삭제
    답글
    1. 안녕하세요? 방문해주셔서 감사합니다.

      깃허브에는 블로그에있는 내용이 통으로 업로드되어져있습니다
      ..다만 프로젝트 자체를 도중에 흐지브지하게 끝낸터라..ㅠㅠ

      삭제
  3. 익명8/19/2020

    admin/index.jsp로 넘어갈때 404에러가 뜨는데 뭐가 문제일까요?ㅠㅠ

    답글삭제
    답글
    1. 안녕하세요? 방문해주셔서 감사합니다.

      404에러는 URL이 없거나 파일이 존재하지 않을때 발생하는 에러입니다.
      컨트롤러에있는 경로와 실제 파일의 경로가 같은지 확인해보셔야할것 같습니다.

      삭제
  4. 저는 9로 지정한 아이디로 로그인해도 관리자 화면 목록이 안뜨네요 ㅠ

    답글삭제
    답글
    1. 아 DB로 아이디 만드니까 나오네요

      삭제
  5. 익명7/18/2021

    안녕하세요 작성해주신 글 참고하며 공부 잘하고 있습니다!

    1 회원가입에서 관리자 아이디 생성 후 오라클에서 verify를 9로 설정
    2 오라클에서 db로 아이디 생성 후 verify를 9로 설정

    이 2가지 방법으로 해봤는데 관리자모드로 로그인이 안되네요ㅜ
    sts도 껐다 켜보고 clean refresh 톰캣서버재시동도 해봤습니다

    도와주세요 감사합니다

    답글삭제
    답글
    1. 익명7/20/2021

      해결했습니다!

      삭제
    2. 혹시 어떻게 해결하셨는지 알 수 있을까요 ㅠㅠ..

      삭제
    3. 이클립스 오류였네요 ..! 해결했습니다

      삭제
  6. 9로 지정한 아이디로 로그인시에도 관리자 화면이 뜨지않아요..커밋도 해봤으나 계속 0값을 가져와서 db로 아이디를 만들어봤는데 암호화때문에 비밀번호가 틀렸다고 로그인이 안되네요 ㅠㅠㅠ

    답글삭제
    답글
    1. 이클립스 오류였네요 해결했습니다

      삭제
    2. 이클립스 오류 or 저같은경우는 mysql만쓰다보니까 오라클 commit하는걸 자꾸 까먹더라고요 테이블에 값 집어넣고 commit안하면 실제 테이블에는 데이터가 안들어가져있어서 안될수도있습니다.!!

      삭제