카테고리 없음

0316 오전수업

unemo 2021. 3. 16. 10:18
반응형

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

web.xml

<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 url쳐보면

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

web.xml

 

<filter>

  <filter-name>springSecurityFilterChain</filter-name>

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 </filter>

 <filter-mapping>

  <filter-name>springSecurityFilterChain</filter-name>

  <url-pattern>/*</url-pattern>

 </filter-mapping>

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 url쳐보면

 

board/list.do 해도 로그인으로 감

 

그리고 아디패스워드 맞춰도들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

web.xml

 

<filter>

  <filter-name>springSecurityFilterChain</filter-name>

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 </filter>

 <filter-mapping>

  <filter-name>springSecurityFilterChain</filter-name>

  <url-pattern>/*</url-pattern>

 </filter-mapping>

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 url쳐보면

 

 

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

web.xml

 

 

 

<filter>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 </filter>

 

 <filter-mapping>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <url-pattern>/*</url-pattern>

 

 </filter-mapping>

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 url쳐보면

 

 

 

board/list.do 해도 로그인으로 감

 

 

 

그리고 아디패스워드 맞춰도

성공해도 세션에 안들어가기떄문에 로긴화면떠야하는데 메인이뜨긴함.. 암튼 좌측에 회원정보안뜨는거보면 세션에 로긴유저정보없다는건 맞는데...
시큐리티 context에 이거 /로 바꾸기

이제 로그인해도 세션이 없기떄문에 다시 로그인화면임

근데 세션만없는거지 authification은 살아있기떄문에

url치면 들어가짐

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

web.xml

 

<filter>

  <filter-name>springSecurityFilterChain</filter-name>

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 </filter>

 <filter-mapping>

  <filter-name>springSecurityFilterChain</filter-name>

  <url-pattern>/*</url-pattern>

 </filter-mapping>

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 url쳐보면

 

 

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

web.xml

 

 

 

<filter>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 </filter>

 

 <filter-mapping>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <url-pattern>/*</url-pattern>

 

 </filter-mapping>

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 url쳐보면

 

 

 

board/list.do 해도 로그인으로 감

 

 

 

그리고 아디패스워드 맞춰도들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

web.xml

 

 

 

<filter>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 </filter>

 

 <filter-mapping>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <url-pattern>/*</url-pattern>

 

 </filter-mapping>

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 url쳐보면

 

 

 

 

 

 

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

 

 

 

 

web.xml

 

 

 

 

 

 

 

<filter>

 

 

 

  <filter-name>springSecurityFilterChain</filter-name>

 

 

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 

 

 </filter>

 

 

 

 <filter-mapping>

 

 

 

  <filter-name>springSecurityFilterChain</filter-name>

 

 

 

  <url-pattern>/*</url-pattern>

 

 

 

 </filter-mapping>

 

 

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 

 

 url쳐보면

 

 

 

 

 

 

 

board/list.do 해도 로그인으로 감

 

 

 

 

 

 

 

그리고 아디패스워드 맞춰도

 

성공해도 세션에 안들어가기떄문에 로긴화면떠야하는데 메인이뜨긴함.. 암튼 좌측에 회원정보안뜨는거보면 세션에 로긴유저정보없다는건 맞는데...

시큐리티 context에 이거 /로 바꾸기

이제 로그인해도 세션이 없기떄문에 다시 로그인화면임

 

근데 세션만없는거지 authification은 살아있기떄문에

 

url치면 들어가짐

 

이건 보임

 

유저에게 권한이 허가된것들은 볼수잇음

근데 역시 세션유지가 문제임

 

그걸 해결할거임

 

뭐로?? 핸들러를 만들어서!

 

세션에 넣어주고나서는 뭐가문제냐

세션의 기간만료가 6분이라면 6분후 세션날라가는데 권한은 살아잇음 그럼안됨

세션과 동기화시켜주는 작업도 해줘야한다는말임

 

근데 로그아웃하고, pds.list.do 치면 error 가 유알엘에뜨는데 그상태에서 로긴다시성공하면 바로 pds.list로 이동함

이건 기본핸들러가 해주는거임

이 기존의 기능에 + 뭔가추가해주고싶으면 상속하고, 이전의 super method한번 콜하고 새로운기능까지 넣으면 기능의 추가개념의 오버라이딩이 성립하게됨

 

그럼 석세스핸들러를 만든다는건

기존의 석세스핸들러를 상속받아서 메서드콜하고 세션에 로긴유저넣는것만 추가한다는말임

 

 

 

public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler{ 

 

인증성공시~어쩌고 하는 메서드 오버라이드

 

이거 프로바이더가 리턴한거임 그걸 받은 매니저가 얘한테 넘겨준거임 

 

public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler{

	@Override
	public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
			Authentication authentication) throws ServletException, IOException {
		
		User user = (User) authentication.getDetails();
		
		MemberVO loginUser = user.getMemberVO();
		HttpSession session = request.getSession();
		session.setAttribute("loginUser", loginUser);
		session.setMaxInactiveInterval(60*6);
		
		super.onAuthenticationSuccess(request, response, authentication);
		
	} 

}

 

여기다가 추가기능 하나더

지난번에 인터셉터하면서 얼티피케이션로그인터셉터 만들엇엇음

 

altification log interceptor : 로그 기록하려고 만든거이hecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

web.xml

 

<filter>

  <filter-name>springSecurityFilterChain</filter-name>

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 </filter>

 <filter-mapping>

  <filter-name>springSecurityFilterChain</filter-name>

  <url-pattern>/*</url-pattern>

 </filter-mapping>

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 url쳐보면

 

 

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

web.xml

 

 

 

<filter>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 </filter>

 

 <filter-mapping>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <url-pattern>/*</url-pattern>

 

 </filter-mapping>

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 url쳐보면

 

 

 

board/list.do 해도 로그인으로 감

 

 

 

그리고 아디패스워드 맞춰도들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

web.xml

 

 

 

<filter>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 </filter>

 

 <filter-mapping>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <url-pattern>/*</url-pattern>

 

 </filter-mapping>

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 url쳐보면

 

 

 

 

 

 

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

 

 

 

 

web.xml

 

 

 

 

 

 

 

<filter>

 

 

 

  <filter-name>springSecurityFilterChain</filter-name>

 

 

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 

 

 </filter>

 

 

 

 <filter-mapping>

 

 

 

  <filter-name>springSecurityFilterChain</filter-name>

 

 

 

  <url-pattern>/*</url-pattern>

 

 

 

 </filter-mapping>

 

 

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 

 

 url쳐보면

 

 

 

 

 

 

 

board/list.do 해도 로그인으로 감

 

 

 

 

 

 

 

그리고 아디패스워드 맞춰도

 

성공해도 세션에 안들어가기떄문에 로긴화면떠야하는데 메인이뜨긴함.. 암튼 좌측에 회원정보안뜨는거보면 세션에 로긴유저정보없다는건 맞는데...

시큐리티 context에 이거 /로 바꾸기

이제 로그인해도 세션이 없기떄문에 다시 로그인화면임

 

근데 세션만없는거지 authification은 살아있기떄문에

 

url치면 들어가짐

 

 

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

web.xml

 

 

 

<filter>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 </filter>

 

 <filter-mapping>

 

  <filter-name>springSecurityFilterChain</filter-name>

 

  <url-pattern>/*</url-pattern>

 

 </filter-mapping>

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 url쳐보면

 

 

 

 

 

 

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

 

 

 

 

web.xml

 

 

 

 

 

 

 

<filter>

 

 

 

  <filter-name>springSecurityFilterChain</filter-name>

 

 

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 

 

 </filter>

 

 

 

 <filter-mapping>

 

 

 

  <filter-name>springSecurityFilterChain</filter-name>

 

 

 

  <url-pattern>/*</url-pattern>

 

 

 

 </filter-mapping>

 

 

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 

 

 url쳐보면

 

 

 

 

 

 

 

board/list.do 해도 로그인으로 감

 

 

 

 

 

 

 

그리고 아디패스워드 맞춰도들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

 

 

 

 

web.xml

 

 

 

 

 

 

 

<filter>

 

 

 

  <filter-name>springSecurityFilterChain</filter-name>

 

 

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 

 

 </filter>

 

 

 

 <filter-mapping>

 

 

 

  <filter-name>springSecurityFilterChain</filter-name>

 

 

 

  <url-pattern>/*</url-pattern>

 

 

 

 </filter-mapping>

 

 

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 

 

 url쳐보면

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

핸들러까지 오는 authecation에서 멤버vo 빼서 세션에 넣고 세션이 종료되면 auth도 만료되도록할거임

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

필터걸거임.. 필터걸면 시큐리티 발동할거임

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

web.xml

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<filter>

 

 

 

 

 

 

 

  <filter-name>springSecurityFilterChain</filter-name>

 

 

 

 

 

 

 

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

 

 

 

 

 

 

 </filter>

 

 

 

 

 

 

 

 <filter-mapping>

 

 

 

 

 

 

 

  <filter-name>springSecurityFilterChain</filter-name>

 

 

 

 

 

 

 

  <url-pattern>/*</url-pattern>

 

 

 

 

 

 

 

 </filter-mapping>

 

 

 

 

 

 

 

필터를걸엇다? 이제로긴처리는 시큐리티에게 다 위임.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

아디비번틀렷을떄 error 확인. 이상태로 board.list.do갈수잇음? 안됨. 로그인화면이떠야함

 

 

 

 

 

 

 

 url쳐보면

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

board/list.do 해도 로그인으로 감

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

그리고 아디패스워드 맞춰도

 

 

 

 

성공해도 세션에 안들어가기떄문에 로긴화면떠야하는데 메인이뜨긴함.. 암튼 좌측에 회원정보안뜨는거보면 세션에 로긴유저정보없다는건 맞는데...

 

 

시큐리티 context에 이거 /로 바꾸기

 

이제 로그인해도 세션이 없기떄문에 다시 로그인화면임

 

 

 

근데 세션만없는거지 authification은 살아있기떄문에

 

 

 

url치면 들어가짐

 

 

 

이건 보임

 

 

유저에게 권한이 허가된것들은 볼수잇음

 

근데 역시 세션유지가 문제임

 

 

 

그걸 해결할거임

 

 

 

뭐로?? 핸들러를 만들어서!

 

 

 

세션에 넣어주고나서는 뭐가문제냐

 

세션의 기간만료가 6분이라면 6분후 세션날라가는데 권한은 살아잇음 그럼안됨

 

세션과 동기화시켜주는 작업도 해줘야한다는말임

 

 

 

근데 로그아웃하고, pds.list.do 치면 error 가 유알엘에뜨는데 그상태에서 로긴다시성공하면 바로 pds.list로 이동함

 

이건 기본핸들러가 해주는거임

 

이 기존의 기능에 + 뭔가추가해주고싶으면 상속하고, 이전의 super method한번 콜하고 새로운기능까지 넣으면 기능의 추가개념의 오버라이딩이 성립하게됨

 

 

 

그럼 석세스핸들러를 만든다는건

 

기존의 석세스핸들러를 상속받아서 메서드콜하고 세션에 로긴유저넣는것만 추가한다는말임

 

 

 

 

 

 

 

public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler{ 

 

 

인증성공시~어쩌고 하는 메서드 오버라이드

 

 

이거 프로바이더가 리턴한거임 그걸 받은 매니저가 얘한테 넘겨준거임 

 

 

public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler{

 

 @Override

 public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,

   Authentication authentication) throws ServletException, IOException {

  

  User user = (User) authentication.getDetails();

  

  MemberVO loginUser = user.getMemberVO();

  HttpSession session = request.getSession();

  session.setAttribute("loginUser", loginUser);

  session.setMaxInactiveInterval(60*6);

  

  super.onAuthenticationSuccess(request, response, authentication);

  

 } 

 

}

 

 

여기다가 추가기능 하나더

 

지난번에 인터셉터하면서 얼티피케이션로그인터셉터 만들엇엇음

 

 

 

altification log interceptor : 로그 기록하려고 만든거이

 

이제 login.do 가 없음

그래서 핸들러맵퍼가 인터셉터로 돌려줄수도없어짐

그게 필터로 온거임

그니까 인터셉터도 여기서 해줘야함 로그인성공할떄마다 기록을 남겨야함

 

package kr.or.ddit.security;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;

import kr.or.ddit.dto.MemberVO;

public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler{

	@Override
	public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
			Authentication authentication) throws ServletException, IOException {
		
		User user = (User) authentication.getDetails();
		
		MemberVO loginUser = user.getMemberVO();
		
		//session loginUser to session
		HttpSession session = request.getSession();
		session.setAttribute("loginUser", loginUser);
		session.setMaxInactiveInterval(60*6);
		
		
		//코드분리..log 작성
		logFile(loginUser, request);
		
		super.onAuthenticationSuccess(request, response, authentication);
		
	}
	
	private void logFile(MemberVO loginUser, HttpServletRequest request) throws IOException{
		//로그인 정보를 스트링으로 저장
		String tag = "[login:user]";
		String log = tag
					+loginUser.getId()+","
					+loginUser.getPhone()+","
					+loginUser.getEmail()+","
					+request.getRemoteAddr()+","
					+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
		
		//파일저장에 필요한것들
		String savePath = "d:\\log";
		File file= new File(savePath);
		if(!file.exists()) {
			file.mkdirs();
		}
		String logFilePath = savePath + File.separator+"login_user_log.csv";
		BufferedWriter out = new BufferedWriter(new FileWriter(logFilePath,true));
		
		//로그를 기록
		out.write(log);
		if(out!=null)out.newLine();
	}

}

 

핸들러어댑터를 등록해줘야함

 

핸들러등록위해서는 두가지작업

 

1. 빈등록

2. 시큐리티컨텍스트에 authentication-success-handler-ref 에 핸들러아이디적어주기

 

 

'

세션들어가고

 

석세스핸들러 알애부분 수정

		//로그를 기록
		out.write(log);
		out.newLine();
		
		if(out!=null)out.close();

 

실패하면 실패햇어다시해 알려주고 로그인화면 보여주고싶으니까

그 핸들러도 커스터마이징할거임

package kr.or.ddit.security;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.security.authentication.AuthenticationServiceException;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;

public class LoginFailureHandler extends SimpleUrlAuthenticationFailureHandler{

	@Override
	public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
			AuthenticationException exception) throws IOException, ServletException {
	
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out= response.getWriter();
		
		String msg="";
		
		if(exception instanceof AuthenticationServiceException || exception instanceof BadCredentialsException){
			msg = exception.getMessage();
		}else {
			msg = "시스템 장애로 인해 서비스가 불가합니다.";
		}
		
		out.println("<script>");
		out.println("alert('"+msg+"');");
		out.println("history.go(-1)");
		out.println("</script>");
		
	
	
	}

	
	
}

 

반응형