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 패스워드를 저장하는 용도로 설계됨
해시함수로 특정 문자열을 암호화하고
체크하는 쪽에서 암호화된 패스워드가 가능한 것인지 확인만 하고
다시 원문으로 되돌리기는 불가능