


posr방식으로 값을 전달할 때 무조건 아이디는 username, 비밀번호는 password 으로 작성해야함
but 커스터마이징을 하고 싶으면 security-context.xml 에서 login-form 엘리먼트를 사용하여 수정
/user_login 페이지 요청하는 요청 처리 메소드를 만들 필요 없음.
username-parameter : 로그인 처리 페이지에게 아이디를 전달할 때 사용할 이름(name 속성값)을 속성값으로 설정 - 미설정시 아이디는 반드시 [username] 속성값으로 설정
password-parameter : 로그인 처리 페이지에게 비밀번호를 전달할 때 사용할 이름(name 속성값)을 속성값으로 설정 - 미설정시 아이디는 반드시 [password] 속성값으로 설정




로그인하지 않은 사용자가 요청하면 500 에러 - if문 사용
principal 객체 사용 비권장
요청 처리 메소드의 매개변수를 Authentication 인터페이스로 작성하면 Front Controller에게 Authentication 객체를 제공받아 사용 가능
Authentication 객체 : 로그인 사용자 및 권한 정보가 저장된 객체

Authentication.getPrincipal() : 로그인 사용자 및 권한 정보가 저장된 UserDetails 객체(CustomUserDetails 객체)를 반환하는 메소드
→ Object 객체를 반환하므로 명시적 객체 형변환 후 사용


로그인 시 로그인 태그 미출력

로그인 시 출력

UserDatails 인터페이스를 상속받은 클래스(CustomUserDetails 클래스)로 인증된 사용자 정보가 저장되어 있는 경우 클래스의 필드값을 제공받아 사용 가능

출력시


security_message.properties 파일에 저장된 메세지 출력

출력시


security-context.xml : auth 패키지의 하위 클래스에 component 어노테이션 작성 시 Spring Bean으로 등록


출력시

인증 성공 후 사용자 권한에 따라 다른 페이지로 이동하는 기능을 제공

인증 성공시 자동 호출되는 메소드인 onAuthenticationSuccess() 메소드를 오버라이드
로그인 사용자의 권한을 저장하기 위한 List 객체 생성 - roleNames

CustomUserDetails 클래스에 작성된 메소드
인증된 사용자에 대한 모든 권한 정보가 요소값으로 저장된 List 객체를 반환하는 메소드를 호출하여 향상된 for문을 이용해 roleNames에 List 객체를 저장
Collection 객체에 저장된 요소값을 매개변수로 전달받은 값과 비교하여 요소값이 없으면 false 있으면 true를 반환하는 메소드를 요청해 클라이언트에게 URL 주소를 전달하여 응답 처리

embed 태그 : 내장 브라우저를 사용해 파일을 제공받아 출력하는 태그
기본적으로 Spring Security는 내장 브라우저를 이용해 파일을 출력하는 것을 막아 놓는다.
해제 방법 : security-context.xml - http 엘리먼트 내에 작성






