2009-11-18 10 views
7

का उपयोग कर लॉगआउट सुविधा को लागू करने के लिए मैं वसंत वेब MVC करने के लिए नया हूँ ..कैसे स्प्रिंग वेब Mvc

मैं कुछ उदाहरण हैं या ऑनलाइन लिंक मुझे कैसे वसंत वेब MVC का उपयोग कर लॉगआउट सुविधा को लागू करने के लिए पता चलता है कि मिल सकता है?

मैं वसंत सुरक्षा (यानी ACEGI) का निर्माण किया सुविधा में उपयोग करने के लिए नहीं करना चाहते हैं ..

अग्रिम धन्यवाद ...

उत्तर

14

सत्र अमान्यता के साथ चाल काम नहीं करती है। ऐसा लगता है कि स्प्रिंग प्रमाणीकरण सत्र आईडी को कहीं भी बफर करता है और सत्र को अमान्य होने पर भी कुकी को स्वीकार करता है।

public void doManualLogin(HttpServletRequest request, String u, String p) { 
    UsernamePasswordAuthenticationToken token = 
      new UsernamePasswordAuthenticationToken(u, p); 
    token.setDetails(new WebAuthenticationDetails(request)); 
    Authentication auth = authenticationProvider.authenticate(token); 
    SecurityContextHolder.getContext().setAuthentication(auth); 
} 

जहां authenticationProvider है:

public void manualLogout() { 
    SecurityContextHolder.getContext().setAuthentication(null); 
} 

यहाँ कोड, मैन्युअल रूप से उपयोगकर्ता में लॉग इन करने के लिए कैसे (यदि किसी की जरूरत है) है:

एक अन्य समाधान मैन्युअल रूप से वसंत सुरक्षा संदर्भ स्पष्ट करने के लिए है आप से वसंत विन्यास

org.springframework.security.authentication.AuthenticationProvider 
9

आप केवल सत्र रद्द करने के लिए है और उपयोगकर्ता लॉग ऑन है बाहर। यह सीधे servlet api द्वारा समर्थित है: HttpSession.invalidate()। आप एक नियंत्रक लिख सकते हैं जो केवल अमान्य कॉल करता है।

class Logout implements Controller{ 
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response){ 
    ModelAndView view = //?; 
    request.getSession().invalidate(); 
    return view; 
}  
} 
+0

लेकिन इस तरह से, लागू करने के लिए कोड के ऊपर का उपयोग करें अभी भी अपने नमूना URL लॉगआउट के बाद पृष्ठ प्रदर्शित होंगे – Nirmal

+0

आप getSession (http://java.sun.com/javaee/5 से सलाह ले सकते /docs/api/javax/servlet/http/HttpServletRequest.html#getSession%28boolean%29) यदि कोई सत्र अभी भी सक्रिय है। या आप सत्र में अपनी प्रमाणीकरण जानकारी की देखभाल करते हैं। आपको इसे एक इंटरसेप्टर या प्रत्येक नियंत्रक में करना है। –

+0

आपको "मुझे याद रखें" कार्यक्षमता का समर्थन करने के लिए आपके द्वारा सेट की गई किसी भी कुकीज को साफ़ करने की भी आवश्यकता हो सकती है। अन्यथा जब आप साइट पर जाते हैं तो अगली बार आप लॉग इन करेंगे। – David

2
@Controller 
    public class LogoutController { 

     @RequestMapping(value="/logout",method = RequestMethod.GET) 
     public String logout(HttpServletRequest request){ 
      HttpSession httpSession = request.getSession(); 
      httpSession.invalidate(); 
      return "redirect:/"; 
     } 

    } 

.. लॉगआउट फिल्टर

+0

सत्र समाप्त होने पर लॉगिन पृष्ठ पर रीडायरेक्ट कैसे किया जाएगा। क्या आप एक और परिदृश्य प्रदान कर सकते हैं। –

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

  • कोई संबंधित समस्या नहीं^_^