Spring security 는 어떻게 사용자 로그 인 시간 기록 기능 을 실현 합 니까?
spring security 는 인터페이스 Authentication SuccessHandler 를 제공 합 니 다.이 인터페이스 에는 로그 인 성공 후 작업 할 수 있 는 방법 이 하나 밖 에 없습니다.
public interface AuthenticationSuccessHandler {
/**
* Called when a user has been successfully authenticated.
*
* @param request the request which caused the successful authentication
* @param response the response
* @param authentication the <tt>Authentication</tt> object which was created during
* the authentication process.
*/
void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response, Authentication authentication)
throws IOException, ServletException;
}
이 인 터 페 이 스 를 통 해 로그 인 성공 후의 작업 을 사용자 정의 할 수 있 습 니 다.그러나 spring security 는 Saved Request Aware Authentication SuccessHandler 구현 클래스 를 제공 합 니 다.이 구현 클래스 는 로그 인 하기 전에 방문 할 주 소 를 기억 할 수 있 습 니 다.로그 인 에 성공 하면 사용 자 를 원 하 는 페이지 로 다시 이동 할 수 있 습 니 다.그래서 저 희 는 보통 이러한 방식 을 계승 하여 사용자 정의 로그 인 후속 작업 을 실현 합 니 다.2.실현 방식
2.1 사용자 정의 AuthenticationSuccessHandler 구현 클래스
Authentication SuccessHandler 인터페이스의 실현 클래스 를 사용자 정의 하고 SavedRequestAware Authentication SuccessHandler 클래스 를 계승 하여 spring 용기 에 추가 합 니 다.
@Component("loginSuccessHandler")
public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {
@Autowired
private IUserDao userDao;
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
// ,
String name = authentication.getName();
userDao.updateLastLonginTime(System.currentTimeMillis(),name);
//
super.onAuthenticationSuccess(request,response,authentication);
}
}
그 중에서 remember-me-parameter="remembermParamater"는 프론트 데스크 에서 전달 할 rememberme 의 매개 변수 이름 을 지정 합 니 다.프론트 데스크 에서 전달 할 매개 변수 값 은 true 또는 false 입 니 다.2.2 spring-security 설정 파일 에 사용자 정의 Authentication SuccessHandler 지정
<!-- -->
<security:form-login login-page="/login.html" login-processing-url="/login"
username-parameter="username" password-parameter="password"
authentication-failure-forward-url="/failed.html"
default-target-url="/index.html"
authentication-success-handler-ref="loginSuccessHandler"
/>
예 를 들 어 사용자 정의 로그 인 페이지 를 정의 하 는 탭 에 authentication-success-handler-ref="login SuccessHandler"를 지정 합 니 다.그 중에서 login SuccessHandler 는 사용자 정의 이 bean 이 용기 에 있 는 이름 입 니 다.2.3 테스트
프로젝트 시작,로그 인,로그 인 성공 후 사용자 테이블 의 last 업데이트login_time 필드.
주의해 야 할 것 은 readme 를 통 해 로그 인 한 경우 현재 사용자 의 로그 인 시간 을 업데이트 하지 않 고 계 정 비밀 번 호 를 통 해 로그 인 할 때 만 업데이트 할 수 있 습 니 다.즉,이때 만 이 onAuthenticationSuccess 방법 을 실행 할 수 있 습 니 다.
3.총화
사용자 로그 인 에 성공 한 후 이번 로그 인 과 관련 된 정 보 를 기록 하려 면 spring-security 가 제공 하 는 Saved Request Aware Authentication SuccessHandler 류 를 계승 하여 그 중의 onAuthentication Success 방법 을 다시 쓰 고 그 중에서 사용자 정 보 를 기록 하 는 작업 을 해 야 합 니 다.방법의 맨 뒤에 부모 클래스 를 호출 하 는 방법 으로 사용 자 를 로그 인 하지 않 기 전에 가 야 할 페이지 로 안내 합 니 다.
테스트 공정 코드 의 주소:공정 예시
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.