मेरी स्प्रिंग प्रोजेक्ट में, मैंने लॉगआउट लक्ष्य यूआरएल को "/ login? Logout" पर एक संदेश के साथ लॉगिन पेज प्रदर्शित करने के लिए "अब आप लॉग आउट हैं" सेट किया है।क्यों/लॉगिन? लॉगआउट रीडायरेक्ट/लॉगिन करने के लिए?
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/error").permitAll()
.anyRequest().fullyAuthenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.successHandler(loginSuccessHandler)
.failureUrl("/login?error")
.and()
.httpBasic()
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.permitAll()
.logoutSuccessHandler(logoutSuccessHandler);
}
और logoutSuccessHandler:
स्प्रिंग सुरक्षा config में, मैं ऐसा किया
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
if (authentication != null) {
Log.debug(authentication.getName() + " LOGOUT !!");
}
setDefaultTargetUrl("/login?logout");
super.onLogoutSuccess(request, response, authentication);
}
जब मैं लॉगआउट करने की कोशिश, मैं पृष्ठ पर पहुंच "/ लॉगिन" (बिना ?लोग आउट)। मुझे समझ में नहीं आता कि यह मुझे इस पृष्ठ पर क्यों रीडायरेक्ट करता है।
मुझे लगता है कि एप्लिकेशन मुझे "/ login? Logout" पर रीडायरेक्ट करने का प्रयास कर रहा है, लेकिन चूंकि अब मैं कनेक्ट नहीं हूं, वसंत सुरक्षा मुझे फिर से लॉग इन करना चाहती है।
जब मैं लॉग इन करते समय "/ login? Logout" पृष्ठ तक पहुंचने का प्रयास करता हूं, तो यह अच्छा पृष्ठ प्रदर्शित करता है।
मैं इस जोड़कर इस समस्या का समाधान मिल गया:
.authorizeRequests()
.antMatchers("/error","/login").permitAll()
loginPage("/login").permitAll()
ऐसा क्यों नहीं किया? क्या मैंने कुछ गलत किया?
सबसे उत्कृष्ट - मैं इस का सबसे स्पष्ट करना कोड के माध्यम से रेंगने द्वारा प्रबंधित किया था, लेकिन मैं 'SecurityConfigurerAdapter' याद आ रही थी। आपके उत्तर के लिए धन्यवाद और हम कुछ दिनों में बक्षीस के बारे में देखेंगे। –
ठीक है - लेकिन एक कैच 22 है! यदि कोई कस्टम हैंडलर सेट करता है, तो यूआरएल स्प्रिंग _resets_। यदि कोई कस्टम यूआरएल सेट करता है, तो स्प्रिंग हैंडलर रीसेट करता है। इसलिए, जबकि 'सुरक्षा कॉन्फ़िगरर एडाप्टर' उपयोगी है; एक कस्टम, कहने, विफलता हैंडलर के लिए एक तरीका है (जब तक मैं कुछ याद नहीं कर रहा हूं), और वसंत को 'permitAll' सही ढंग से स्वत: कॉन्फ़िगर करें, इसके अलावा,' ExactUrlRequestMatcher' का उपयोग 'निजी' है, इसलिए कोई भी कुछ नहीं कर सकता समान रूप से समान ... –
एपीआई बहुत नाजुक है, लेकिन मुझे यकीन नहीं है कि आप वास्तव में क्या पूछ रहे हैं। क्या आप अपना टूटा हुआ कोड पोस्ट कर सकते हैं और मैं इसे मिनी-प्रश्न के रूप में संबोधित करने की कोशिश करूंगा? कृपया यह भी निर्दिष्ट करें कि क्या आप 'DefaultLoginPageConfigurer' का उपयोग करने का प्रयास कर रहे हैं या आपके पास अपने स्वयं के दृश्य टेम्पलेट हैं। – heenenee