2012-11-20 28 views
5

मैंने वसंत सुरक्षा का उपयोग कर एक वेब अनुप्रयोग विकसित किया है। लॉगिन के लिए इसे एलडीएपी से एक्सेस मिल जाता है। अब मैं वसंत सुरक्षा का उपयोग करके सत्र का प्रबंधन करना चाहता हूं, मैं authentication.getName() का उपयोग करके देख सकता हूं मुझे username मिल रहा है और मुझे sessionID भी मिल सकता है।वसंत सुरक्षा का उपयोग कर सत्र प्रबंधन: समवर्ती सत्र

अब मैं यह सुनिश्चित करना चाहता हूं कि एक ही उपयोगकर्ता किसी अन्य ब्राउज़र का उपयोग करके उसी सिस्टम से लॉगिन करने का प्रयास कर रहा है, तो उसे यह संदेश प्राप्त करना चाहिए कि वह पहले से ही अपने खाते में लॉगिन कर रहा है।

क्या कोई यह समझ सकता है कि इसे कैसे प्राप्त किया जाए ????

<security:session-management 
     invalid-session-url="/login.jsp?error=sessionExpired" 
     session-authentication-error-url="/login.jsp?error=alreadyLogin"> 
    <security:concurrency-control 
       max-sessions="1" 
       expired-url="/login.jsp?error=sessionExpiredDuplicateLogin" 
       error-if-maximum-exceeded="false" /> 
</security:session-management> 

जब मैं इस का उपयोग और कुछ अन्य ब्राउज़र यह मुझे निम्न त्रुटि देता है का उपयोग कर के लिए लॉग इन करने का प्रयास करें: कुछ

HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalStateException: Cannot call sendError() after the response has been committed 
enter code here 

उत्तर

6

मैं गायब हो सकता है, लेकिन मैं अगले विन्यास की कोशिश की है और यह रूप में काम करता उम्मीद:

<!-- more configuration stuff --> 

<sec:form-login login-page="/login.jsp" 
    default-target-url="/defaultTarget.jsp" 
    authentication-failure-url="/login.jsp?error=true" 
    login-processing-url="/login" always-use-default-target="true" /> 

<sec:session-management> 
    <sec:concurrency-control max-sessions="1" error-if-maximum-exceeded="true" /> 
</sec:session-management> 

जब मैं किसी अन्य ब्राउज़र से एक ही उपयोगकर्ता से लॉग इन करने का प्रयास करें, यह मुझे ले जाता है /login.jsp करने के लिए और पता चलता है त्रुटि संदेश: Maximum sessions of 1 for this principal exceeded

संपादित करें: आप भी सुझाव के रूप में मैं fsame विन्यास है अपने web.xml

<listener> 
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class> 
</listener> 
+0

में इस जगह की जरूरत है। प्लस JdbcTokenRepositoryImpl। यह सब के साथ, मैं एक ब्राउज़र के साथ लॉग इन करता हूं; और फिर मैं फिर से एक और के साथ लॉग इन करें। ऐसा लगता है कि दूसरा लॉग इन है, और यह वास्तव में है। मेरी समस्या यह है कि, मुझे पहले ब्राउज़र से एक लिंक मिलता है, मुझे निम्नलिखित अपवाद मिलता है: 'एस्टाडो HTTP 500 - प्रीपेडस्टेटमेंट कॉलबैक; खराब एसक्यूएल व्याकरण [persistent_logins से हटाएं जहां उपयोगकर्ता नाम =?]; [ब्ला ब्लाह]: तालिका 'gbt.persistent_logins' मौजूद नहीं है। और तालिका वास्तव में डीबी से असंतुष्ट है !!! क्या किसी के पास क्या चल रहा है इसका कोई विचार है? – kazbeel

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