로그인 페이지 커스터마이징
security-context.xml
form-login작성
login-processing-url : 로그인폼 제출 url. 핸들러메소드 필요 없음.
logout-url : 로그아웃 처리 url. 핸들러메소드 필요 없음. 왜냐면 시큐리티에서 제공한 모듈로 넘어가니까
xss공격등에 대비해 중요한 요청에는 csrf속성값을 주고받음
모든 POST요청에 csrf 토큰값 인증 사용
<csrf disabled="false"/> 기본값
<csrf disabled="true"/> csrf 끄기(보안상 취약)
memberLoginForm에서 csrf사용하기
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 추가
form태그를 form:form으로 변경
-> form:form태그는 method="POST"일때 _csrf인증 토큰 발행 해줌(hidden 타입으로 속성값 발행)
login, logout을 post방식으로 처리해야만 함(강제화함)
login, logout은 spring security안에서 처리됨 -> requestMapping은 필요 없음
login-page는 loginForm을 요청하는거니까 사용되지만 login-processing-url은 우리껄 쓰는게 아니라 url만 가져다 씀
그래서 아이디 비번이 틀렸을때 사용자 피드백 X, 후처리가 별도로 필요하면 별도로 포워딩처리 가능(커스터마이징 처리해서)
로그인 성공/실패시 사용자 피드백을 주고 싶으면
security-context.xml >form-login태그 안에
> authentication-failure-forward-url="/member/memberLoginFailure.do" 추가하기(실패했으면 여기로 가주세요. 성공시도 작성가능)
authentication-success-forward-url : 인증 성공후 처리과정 작성. 쿠키관련 처리. 세션정보를 security에서 관리하고 있음. 더이상 세션에서 로그인 정보 가져올 필요 없음
authentication-failure-forward-url : 인증 실패후 처리. 사용자피드백 작성
> 컨트롤러에 사용자 피드백 작성
@PostMapping("/memberLoginFailure.do")
public String memberLoginFailure(RedirectAttributes redirectAttr) {
redirectAttr.addFlashAttribute("msg", "아이디 또는 비밀번호가 일치하지 않습니다");
return "redirect:/member/memberLoginForm.do";
}
'프로그래밍 > Spring' 카테고리의 다른 글
11.09(Spring Security - 사용자 인증) (0) | 2020.11.09 |
---|---|
11.06(Spring Security - security 권한 생성) (0) | 2020.11.06 |
11.04(Spring Security - 사용자 인증, taglibs 추가하기) (0) | 2020.11.04 |
11.03(Spring Security - 암호화 처리) (0) | 2020.11.03 |
11.02(파일 다운받기, ajax, jsonView 관련 의존) (0) | 2020.11.02 |