2017-11-29 13 views
1

스프링 보안에 문제가 있습니다. 그것은 다음과 같습니다스프링 보안 : 세션 시간 초과에도 불구하고 데이터를 저장할 수 있습니다.

  1. 내가
  2. 내가
  3. 나는
  4. 내가 클릭 컴퓨터에 돌아와 (충분히 활성 세션 제한 시간 초과) 몇 시간 동안 컴퓨터를 떠나 포뮬러 일부 데이터를 변경 웹 응용 프로그램의 "저장"버튼

이제 데이터가 데이터베이스에 저장되고 응용 프로그램에서 내 세션이 시간 초과되었음을 로그 아웃합니다. 이 동작은 부적절합니다. 정의 된 시간 또는 기본 시간 이후에 완전히 로그 아웃되었는지, 시간 초과 후 데이터를 저장할 수있는 가능성이 없는지 확인하는 방법은 무엇입니까?

내 보안의 context.xml은 다음과 같다 : 당신은 당신의 <security:logout 태그에 XML 속성 누락

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:security="http://www.springframework.org/schema/security" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd 
     http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> 

    <import resource="spring-database.xml" /> 

    <security:http pattern="/login" security="none" /> 
    <security:http pattern="/loginfailed" security="none" /> 
    <security:http pattern="/403" security="none" /> 

    <security:http auto-config="true"> 
     <security:intercept-url pattern="/*" access="ROLE_ADMIN" /> 
     <security:form-login login-page="/login" 
      default-target-url="/" authentication-failure-url="/loginfailed" /> 
     <security:logout logout-success-url="/login" /> 
     <security:access-denied-handler 
      error-page="/403" /> 
    </security:http> 

    <security:authentication-manager> 
     <security:authentication-provider> 
      <security:jdbc-user-service 
       data-source-ref="dataSource" 
       users-by-username-query="select username,password, enabled from users where username= ?" 
       authorities-by-username-query="select username,role from user_roles where username= ?" /> 
     </security:authentication-provider> 
    </security:authentication-manager> 

</beans> 

답변

1

. 이 태그에 invalidate-session="true"을 추가하기 만하면됩니다. 이 방법을 통해 무효 세션의 모든 경우에 사용자는 다시 로그인해야합니다. this 스레드에서 Spring Secutity의이 기능에 대한 자세한 정보를 읽을 수 있습니다.

아래에서 앞서 언급 한 속성을 포함하는 XML의 일부를 찾을 수 있습니다.

... 

<security:http auto-config="true"> 
     <security:intercept-url pattern="/*" access="ROLE_ADMIN" /> 
     <security:form-login login-page="/login" 
      default-target-url="/" authentication-failure-url="/loginfailed" /> 
     <security:logout logout-success-url="/login" invalidate-session="true"/> 
     <security:access-denied-handler 
      error-page="/403" /> 
</security:http> 

...