AccessDeniedHandler 인터페이스 구현 
(접근 제한이 된 다양한 처리를 위한 인터페이스)
접근 제한되었을 때 쿠키나 세션에 특정한 작업을 하거나 
HttpServletResponse에 특정한 헤더를 추가하는 경우는 
직접 구현한 방식을 사용함 
패키지 생성
org.green.security 패키지 
- CustomAccessDeniedHandler 클래스 생성 
AccessDeniedHandler 인터페이스 상속 
커스텀 로그인 페이지 
- login-page속성에 특정한 url을 지정하면 된다.
ex>
<security:form-login /> 을
<security:form-login login-page="/customLogin" /> 이걸로 바꿈
- Controller의 url에 해당하는 메소드를 추가 (GetMapping)
에러 메세지, 로그아웃 메세지를 파라미터 통해서 사용 가능  
- 해당 jsp 페이지를 생성
로그인 성공 시 특정한 동작을 하도록 제어하고 싶은 경우 
AuthenticationSuccessHandler 인터페이스 구현 후 
권한을 체크해서 해당 권한을 가졌으면 해당 url로 이동하게 설정
- CustomLoginSuccessHandler 클래스 생성 
AuthenticationSuccessHandler 인터페이스 상속
인증/권한을 위한 테이블 설계
create table tbl_member(
	userid varchar2(50) not null primary key,
	userpw varchar2(100) not null,
	username varchar2(100) not null,
	regidate date default sysdate,
	updatedate date default sysdate
)
create table tbl_member_auth(
	userid varchar2(50) not null,
	auth varchar2(50) not null,
	constraint fk_member_auth foreign key(userid) 
	references tbl_member(userid)
)
BCriptPasswordEncoder 클래스를 이용한 패스워드 보호
bcripty 패스워드를 저장하는 용도로 설계됨
해시함수로 특정 문자열을 암호화하고
체크하는 쪽에서 암호화된 패스워드가 가능한 것인지 확인만 하고
다시 원문으로 되돌리기는 불가능