폼 로그인 인증 을 알아보자!!
대표사진 삭제
출처: 스프링 시큐리티 (인프런)
먼저 사용자가 get방식으로 home url로 자원을 접근할려고 한다
인증된 사용자만 가능하다고 보안이 되어 있다. 현재 사용자가 인증을 받지 않으면 바로 로그인 페이지로 이동한다
그러면 유저가 이름과 패스워드를 입력해서 Post 방식으로 처리를 할것이다. 서버에서는 Security가 Session을 생성하고
인증토큰 을 생성하고 저장한다.
SecurityContext를 생성하고 저정하는 방식이다 이거는 추후에 공부하여 다시 올리도록 하겠다.
인증을 받은 이후에 클라이언트가 홈 url로 자원을 접근하면 Security가 인증토큰의 존재여부를 판단하고 사용자가 인증토근을 이용하요 해당 자원을접근할수 있고 Security가 유자할수 있도록 해준다. 정확하게 말하면 session 에 저장된 인증토큰이 유지된다고 생각하면될거 같다.
formLogin Api를 살펴보자
폼 로그인 인증 을 알아보자!!
대표사진 삭제
출처: 스프링 시큐리티 (인프런)
먼저 사용자가 get방식으로 home url로 자원을 접근할려고 한다
인증된 사용자만 가능하다고 보안이 되어 있다. 현재 사용자가 인증을 받지 않으면 바로 로그인 페이지로 이동한다
그러면 유저가 이름과 패스워드를 입력해서 Post 방식으로 처리를 할것이다. 서버에서는 Security가 Session을 생성하고
인증토큰 을 생성하고 저장한다.
SecurityContext를 생성하고 저정하는 방식이다 이거는 추후에 공부하여 다시 올리도록 하겠다.
인증을 받은 이후에 클라이언트가 홈 url로 자원을 접근하면 Security가 인증토큰의 존재여부를 판단하고 사용자가 인증토근을 이용하요 해당 자원을접근할수 있고 Security가 유자할수 있도록 해준다. 정확하게 말하면 session 에 저장된 인증토큰이 유지된다고 생각하면될거 같다.
formLogin Api를 살펴보자
form 로그인 인증방식에 대하여 살펴보도록 하자!
나머지는 길어서 따로 설명한다!
로그인 성공했을때 핸들러를 호출한다AuthenticationSuccessHandler인터페이스를 구현한 구현체를 설정해주면된다.아직 구현한게 없으니
간단하게 익명 클래스를 사용하겠다(new AuthenticationSuccessHandler())
인증성공 했을때 최종적으로 결과를 담은 인증 객체 까지 파라메터로 전달되어 넘어온다 이것들을 활용해서 구체적인 로직이 가능하다.
System.out.println("authentication : user "+ authentication.getName());
현재 인증에 성공한 사용자의 이름을 출력한다.
성공하게 되면 설정해준 페이지로 이동한다.
httpServletResponse.sendRedirect("/");
로그인 실패했을때도 마찬가지다 ( new AuthenticationFailureHandler()) 요놈을 호출한다.
파라메터 값인(AuthenticationException e) 인증예외 객체를 파라메터로 전달받고 여기에는 예외 메세지를 확인할수 있고
다시 사용자가 로그인 페이지로 이동할수 있게한다.
httpServletResponse.sendRedirect("/login");
이렇게 설정이 끝나고 톰캣와스를 구동하게 되면 아마 로그인창을 확인할수 없을것이다 왜냐!!!!!
위에서 .loginPage("/loginPage") 요놈으로 Security에서 제공하는 로그인페이지가 아닌 직접 url로 접근하도록 변경했기 때문이다.
자그러면 위에 코드를 주석 처리 해보자!! 시큐리티 로그인 페이지를 다시 확인 하는거즤~! .loginPage("/loginPage") 요놈을 주석처리 하고 페이지를 확인하면 !!! 쫘라라라라란
여기서 설정해준 유저 네임과 패스워드를 입력 하면 어디로 갈까요??
네 정답은 처음에 설정해준
요놈을 타고 접근하게 됩니다.
자 하나더 확인을 해야겠즤? 우리가 설정해준 파라메터 이름 변경해준거 기억이 낫다 그래서 페이지 소스를 확인해보니
action , name , passowrd 가 변경된거 확인 가능하다
'SpringSecurity' 카테고리의 다른 글
SpringSecurity(RemeberMe) (0) | 2020.10.30 |
---|---|
SpringSecurity(Logout),LogoutFilter (0) | 2020.10.30 |
SpringSecurity(LoginForm)인증 (0) | 2020.10.30 |
SpringSecurity(보안기능구현) (0) | 2020.10.30 |
SpringSecurity(시작!) (0) | 2020.10.30 |