본문 바로가기

컴퓨터공학/Spring & Hibernate

Spring> Security> Login Form

프로젝트 만들기

전에 쓰던 프로젝트를 복붙하여 새로 만들고 context root도 새로 바꾸어주자

 

 


1 . Spring Config for Custom Login Form

 

 

httpSecurity 를 override하여 메소드를 만들어주자.

 

 

configure 메소드의 내용은 다음과 같다.

 

HttpServletRequest 에 근거하여 접근을 제어한다. 

어떤 request 든 반드시 인증(Authenticated) 받아야함

그리고

로그인 프로세스를 커스터마이징함

리퀘스트 매핑에 우리가 만든 커스텀 폼을 보여준다. "/showMyLoginPage"

로그인 폼은 데이터를 특정 URL에 포스트한다. "/authenticateTheUser"

모두가 로그인 페이지를 볼 수 있게 허락한다. 

 


중간 점검

다음은 우리의 목표이다. 

 

1. 수정된 Login form을 접근하기위해 Spring Security Configuration 을  수정한다.

2. 수정된 Login form을 보여주기 위해 Controller를 만든다.

3. Login Form을 생성한다. 

     HTML( CSS )

     Spring MVC form Tag <form:form>

 

 

여기서 1번을 했다.

1. 

configure(AuthenticationManagerBuilder

메모리, 데이타베이스 등등에 담겨져 있는 정보를 인증하기 위한 설정이다.

 

configure(HttpSecurity http)

어플리케이션에서 로그인이나 로그아웃의 security를  다루기 위한 설정

 

 

이제 우리가 해야할 것은 로그인 페이지를 보여주기 위해 Controller를 보여줘야한다.

 


2. Controller 생성

Config 클래스에서 /showMyLoginPage 이 것을 받기 위해 컨트롤러를 만들어야 한다. 

 


3. Login form 생성

 

이런 위치에 jsp 파일을 만들고

html로 위와 같이 적절히 구성

 


404 representation 오류발생??

 

아무리 ㅅㅂ 코드를 제대로 짜도 404오류가 뜨길래 대체 뭐가 문제인지 별지랄을 다해도 해결이 안됐다..

Context root 맞추기, web.xml 삭제,  pom.xml 설정, 오타 확인, 메이븐 라이브러리 재설치  등등 다 했는데 안돼서 

(web.xml이 방해를 주는 것은 맞았지만 근본 문제는 아니었다...)

결국 프로젝트 삭제 후 다시 import 해보니까 잘 해결됐다..

 

 


중간정리

지도를 보자.. 

처음에 사용자가 접근을 하면 필터를 실행한다..

필터는 config 내용을 참조한다.

config에서 /showMyLoginPage 내용을 보고 페이지를 이동한다.

LoginController에서 /showMyLoginPage 요청을 잡아 plain-login.jsp를 보여준다.

유저는 plain-login.jsp 페이지에서 Post 방식으로 /authenticateTheUser 에 데이터를 보낸다.

/authenticateTheUser는 필터에서 잡는데 이 내용은 config에 있다.

필터는 데이터 내용을 메모리에 있는 데이터와 비교하여 맞는지 확인

맞으면 정상대로 메인 페이지를 보여준다.

 


 

Adding Error Message

에러 메세지가 없으면 뭐가 문제인지 알 수 없다. 따라서 만들어 주자.

 

여기에 색깔만 넣어보자..