2012-08-22 12 views
16

में सत्र सत्र समय समाप्ति क्या वसंत में सत्र समय समाप्ति निर्दिष्ट करने का कोई तरीका है? मैं इसे web.xml में निर्दिष्ट नहीं कर सकता। जैसा कि मैं नियंत्रक में सत्र स्कोप बीन का उपयोग कर रहा हूं,स्प्रिंग एमवीसी

मैंने वसंत xml फ़ाइलों के माध्यम से नियंत्रक को कॉन्फ़िगर किया है। या तो

session.setMaxInactiveInterval(60*60); 

वहाँ ऐसा करने का कोई अन्य रास्ता नहीं है

class xyzController{ 

    ABCSessionScopeClass objectWhichWillBeStoredInSession; 
} 

मैं इस का उपयोग नहीं कर सकते हैं। मुझे प्रति सत्र या सभी सत्रों के लिए एक ही समय में टाइमआउट सेट करना कोई फर्क नहीं पड़ता।

+0

मैं इसे भी जानना चाहता हूं। जब मैं इस माध्यम से चला गया, * केवल * जिस तरह से मैं इसे बदल सकता था वह web.xml (या server.xml) में सेटिंग के साथ था। – nickdos

+0

setMaxInactiveInterval के साथ क्या गलत है, क्या यह सर्वलेट एपीआई का हिस्सा नहीं है? कुछ वसंत सुरक्षा उपकरण उदाहरण के लिए सीधे session.invalidate पर कॉल करते हैं, और इसके साथ कोई समस्या नहीं है। –

+1

@ BorisTreukhov इसमें कुछ भी गलत नहीं है। यह आखिरी विकल्प है। मैं बस यह सुनिश्चित करना चाहता हूं कि कॉन्फ़िगरेशन फ़ाइल या कुछ में निर्दिष्ट करने जैसा कोई अन्य विकल्प है। – JProgrammer

उत्तर

0

मैं किसी भी वसंत विन्यास फाइल के माध्यम से सत्र टाइमआउट मान निर्दिष्ट करने के लिए किसी भी तरह से खोजने के लिए सक्षम नहीं था। मैं <aop:scoped-proxy> बीन का उपयोग कर रहा था ताकि मुझे सत्र में पढ़ने/लिखने के मूल्य/ऑब्जेक्ट को प्रबंधित करने की आवश्यकता न हो। अब, मैं servlets API का उपयोग किए बिना, सत्र टाइमआउट मान सेट करने के लिए भी वही चाहता हूं। लेकिन ऐसा लगता है कि web.xml फ़ाइल के अलावा इसे निर्दिष्ट करने का कोई तरीका नहीं है। तो टाइमआउट अवधि निर्धारित करने के लिए सर्वलेट एपीआई request.getSession() का उपयोग कर समाप्त हो गया। मैंने समय मूल्य को बाहरी किया ताकि मैं इसे कोड को दोबारा बिना आसानी से बदल सकूं। अगर किसी को बेहतर दृष्टिकोण मिल गया तो कृपया पोस्ट करने के लिए स्वतंत्र महसूस करें। यदि बेहतर पाया जाता है, तो मैं इसे एक उत्तर के रूप में स्वीकार कर सकता हूं।

+0

आप यहां वर्णित वेब.एक्सएमएल का उपयोग करके सत्र टाइमआउट निर्दिष्ट कर सकते हैं: http://stackoverflow.com/questions/12932589/changing-the-default-session-timeout-of-a-spring-web- अनुप्रयोग –

+1

यदि आप हैं स्प्रिंग बूट का उपयोग करके, आप application.properties में सत्र टाइमआउट निर्दिष्ट कर सकते हैं: server.session-timeout = 86400 –

21

समाधान शुद्ध वसंत MVC का उपयोग कर, sevlet context.xml

<mvc:interceptors> 
    <bean class="com.xxx.SessionHandler" /> 
</mvc:interceptors> 

हैंडलर एडाप्टर

@Component 
public class SessionHandler extends HandlerInterceptorAdapter { 
    @Override 
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
     request.getSession().setMaxInactiveInterval(60*60); 
     return true; 
    } 
} 

आप वसंत सुरक्षा का उपयोग कर रहे मानते हुए,

प्रत्येक सफल प्रवेश के लिए मुझे लगता है कि सबसे अच्छा तरीका है LoginSuccessHandler बनाने के लिए और सामान्य लॉगिन के साथ-साथ मुझे याद रखने के लिए प्रमाणीकरण-सफलता-हैंडलर निर्दिष्ट करें।

@Service 
public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler { 
    @Override 
    public void onAuthenticationSuccess(
      HttpServletRequest request, 
      HttpServletResponse response, 
      Authentication authentication) throws ServletException, IOException { 
     request.getSession().setMaxInactiveInterval(60*60); 
     super.onAuthenticationSuccess(request, response, authentication); 
    } 

} 

 

<http auto-config="true" use-expressions="true"> 
    <form-login login-page="/login" 
     authentication-failure-url="/login.hst?error=true" 
     **authentication-success-handler-ref="loginSucessHandler"** /> 
    <logout invalidate-session="true" logout-success-url="/home" logout-url="/logout" /> 
    <remember-me key="jbcp" **authentication-success-handler-ref="loginSucessHandler"**/> 
    <session-management> 
     <concurrency-control max-sessions="1" /> 
    </session-management> 
</http> 
+0

मैं वसंत सुरक्षा का उपयोग नहीं कर रहा हूं। – JProgrammer

+0

यदि आप वसंत सुरक्षा का उपयोग नहीं कर रहे हैं तो आप और हैंडलरइंटरसेप्टर एडाप्टर का भी उपयोग कर सकते हैं। वसंत एमवीसी के साथ। –

संबंधित मुद्दे