/ / प्रोग्राममैटिक मी मी याद रखें? - जावा-ई, वसंत-सुरक्षा

प्रोग्राममैटिक मी मी याद रखें? - जावा-ई, वसंत-सुरक्षा

सभी को अभिवादन मैं वसंत सुरक्षा 3.0 का उपयोग कर रहा हूं।2 और मेरा लॉगिन फ़ॉर्म स्प्रिंग लॉगिन कॉन्फ़िगरेशन का उपयोग नहीं करता है, यह एक कस्टम लॉगिन फ़ॉर्म है (मुझे इसे इस तरह बनाना होगा) मैं सोच रहा था कि कैसे एक उपयोगकर्ता को प्रोग्रामेटिक रूप से याद किया जाए अगर उसने मुझे चेकबॉक्स याद है नोट: हमारे पास एक और लॉगिन फ़ॉर्म है जो स्प्रिंग लॉगिन कॉन्फ़िगरेशन का उपयोग करता है और मुझे याद रखने वाली सेवा में लगातार टोकन दृष्टिकोण का उपयोग करता है। तो कोई विचार?

उत्तर:

उत्तर № 1 के लिए 1

यदि आप बदलना चाहते हैं कि कैसे याद रखें-मुझे काम करता है "विस्तार करने की आवश्यकता है AbstractRememberMeServices या TokenBasedRememberMeServices (वास्तव में आप क्या करने की कोशिश कर रहे हैं पर आधारित)।

फिर आपको अपने रिमेम्बर मी कार्यान्वयन के माध्यम से स्प्रिंग को इंगित करना होगा services-ref कॉन्फ़िगरेशन xml फ़ाइल में याद-मुझे निर्देश का निर्देश:

<remember-me services-ref="sword101CustomRememberMeServices" key="{GUID}" token-validity-seconds="3600" data-source-ref="dataSource"/>

यदि आप अपने सेटअप और अपने लक्ष्यों के बारे में थोड़ा और विशिष्ट हो सकते हैं तो मैं अधिक विस्तृत सहायता प्रदान करने में सक्षम हो सकता हूं।

अनुदान


जवाब के लिए 0 № 2

मुझे लगता है कि आप एक कस्टम फ़ॉर्म का उपयोग करते हैं लेकिन फिर भी स्प्रिंग लॉगिन url (j_spring_security_check) को कॉल करते हैं।

आप अपने कस्टम लॉगिन फॉर्म पर सिर्फ रिमेम्बर फ़ील्ड (_spring_security_remember_me) का उपयोग क्यों नहीं करते हैं?


जवाब के लिए 0 № 3

यहाँ आप कैसे कर सकते हैं याद रखें मैन्युअल मैन्युअल रूप से प्राधिकरण के दौरान,

सबसे पहले, आप एक उपयोगकर्ता को सुरक्षा संदर्भ में सहेजते हैं

@Autowired
RememberMeServices rememberMeServices;

@RequestMapping(value = "/login")
public String login(HttpServletRequest request,HttpServletResponse response) {

Authentication auth = new UsernamePasswordAuthenticationToken(currentUser, null, currentUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(auth);
rememberMeServices.loginSuccess(request, response, auth);

}

यहाँ विन्यास है

@Configuration
...
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Autowired
DataSource dataSource;
@Bean
public RememberMeServices rememberMeServices() {
//      TokenBasedRememberMeServices if you don"t want to persist token
//      return new TokenBasedRememberMeServices("key", userDetailsService);
PersistentTokenBasedRememberMeServices rememberMeServices =
new PersistentTokenBasedRememberMeServices("key", userDetailsService, persistentTokenRepository());
rememberMeServices.setAlwaysRemember(true);
return rememberMeServices;
}

@Bean
public PersistentTokenRepository persistentTokenRepository() {
JdbcTokenRepositoryImpl db = new JdbcTokenRepositoryImpl();
db.setDataSource(dataSource);
return db;
}