[SPRING] 스프링 보안에서 세션을 활성화하고 세션 시간 제한을 설정하는 방법
SPRING스프링 보안에서 세션을 활성화하고 세션 시간 제한을 설정하는 방법
안녕하세요 저는 Spring Security에 익숙하지 않습니다. 로그인, 로그 아웃 및 세션 타임 아웃 기능에 대해 작업하고 있습니다. 이 문서를 참조하여 코드를 구성했습니다. 아래 코드를 참조하십시오.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/admin/**")
.access("hasRole('ROLE_USER')").and().formLogin()
.loginPage("/login").failureUrl("/login?error")
.usernameParameter("username")
.passwordParameter("password")
.and().logout().logoutSuccessUrl("/login?logout").and().csrf();
http.sessionManagement().maximumSessions(1).expiredUrl("/login?expired");
}
AbstractSecurityWebApplicationInitializer 클래스 재정의
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer {
@Override
public boolean enableHttpSessionEventPublisher() {
return true;
}
}
그래도 내가 잘하고 있는지, 내가 세션 시간 제한을 설정해야 할 때 좋은 것처럼 보이는지 명확히해야합니다. 나는 주석에 기반하여이를 완전히 수행하고있다.
해결법
-
==============================
1.JavaConfig를 사용하고 XML을 사용하지 않으려면 HttpSessionListener를 만들고 getSession (). setMaxInactiveInterval ()을 사용하고 Initializer에서 onStartup ()에 리스너를 추가합니다.
JavaConfig를 사용하고 XML을 사용하지 않으려면 HttpSessionListener를 만들고 getSession (). setMaxInactiveInterval ()을 사용하고 Initializer에서 onStartup ()에 리스너를 추가합니다.
public class SessionListener implements HttpSessionListener { @Override public void sessionCreated(HttpSessionEvent event) { System.out.println("session created"); event.getSession().setMaxInactiveInterval(15); } @Override public void sessionDestroyed(HttpSessionEvent event) { System.out.println("session destroyed"); } }
그런 다음 초기화 프로그램에서 :
@Override public void onStartup(ServletContext servletContext) throws ServletException { super.onStartup(servletContext); servletContext.addListener(new SessionListener()); }
-
==============================
2.위의 문제는 web.xml에서만 아래 설정을 추가하여 해결할 수있었습니다. 더 좋은 방법이 받아 들여질 것입니다.
위의 문제는 web.xml에서만 아래 설정을 추가하여 해결할 수있었습니다. 더 좋은 방법이 받아 들여질 것입니다.
<session-config> <session-timeout>20</session-timeout> </session-config>
-
==============================
3.application.properties를 사용할 때 set 속성 server.session.timeout = value는 초 단위입니다.
application.properties를 사용할 때 set 속성 server.session.timeout = value는 초 단위입니다.
from https://stackoverflow.com/questions/36795678/how-to-enable-session-and-set-session-timeout-in-spring-security by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 3.1 + Hibernate 4 - HibernateTemplate (0) | 2019.02.22 |
---|---|
[SPRING] 한정자에 의해 ApplicationContext에서 빈을 얻는다. (0) | 2019.02.22 |
[SPRING] 모든 SpringBeans와 ApplicationContext가 초기화 된 후에 메소드 호출하기 (0) | 2019.02.22 |
[SPRING] Jetty의 Spring 애플리케이션에서 jsessionid 쿠키 경로를 서버 루트로 변경하는 방법은 무엇입니까? (0) | 2019.02.22 |
[SPRING] 스프링 부트를 만드는 방법은 세션 쿠키를 발행하지 않으십니까? (0) | 2019.02.22 |