में स्वचालित लॉगइन करने के लिए मुझे पता है वहाँ पहले से ही इस पर सवाल का एक बहुत है, लेकिन मैं अभी भी एक निश्चित जवाब खोजने के लिए नहीं मालूम था। मैं जो करना चाहता हूं उसे उपयोगकर्ताओं को 2 सप्ताह या जब तक लॉग आउट नहीं किया जाता है, तब तक याद किया जाता है। नीचे जो मुझे लगता है वह हो रहा है और मैं सोच रहा था कि अगर थोड़ा और अनुभव वाला कोई व्यक्ति मुझे बता सकता है कि मैं सही हूं या गलत हूं।सत्र और कुकीज़ GWT
उपयोगकर्ता पहली बार के लिए लॉग करता है। सर्वर पर एक आरपीसी कॉल 'UserInfo' ऑब्जेक्ट देता है जिसमें इसके साथ एक नया sessionID शामिल होता है। उर्फ सर्वर पर ऐसा होता है और user
दिया जाता है:
user.setSessionId(getThreadLocalRequest().getSession().getId());
अब के बाद user
दिया जाता है हम ग्राहक के पक्ष डाटा स्टोर करने कुकीज़ बनाना होगा। मैं सही हूँ कह हम एक कुकी की जरूरत है वर्तमान उपयोगकर्ता और एक अन्य sessionID के लिए पहचान करने के लिए:
final long DURATION = 1000 * 60 * 60 * 24 * 14; //duration remembering login - 2 weeks
Date expires = new Date(System.currentTimeMillis() + DURATION);
String sessionID = user.getSessionId();
String username = user.getUsername();
Cookies.setCookie("sessionID", sessionID, expires, null, "/", false);
Cookies.setCookie("username", username, expires, null, "/", false);
अब जब उपयोगकर्ता एक बाद की तारीख में वापस एप्लिकेशन की बात आती है कि हम कुकी की जाँच करें और (बशर्ते कि वे मौजूद है और जैसे किसी कारण से नष्ट कर दिया नहीं किया गया है एक स्पष्ट उपयोगकर्ता से लॉग आउट) सर्वर से आरपीसी के माध्यम से सत्र वैधता की जांच करने उनके मानों का उपयोग:
String sessionID = Cookies.getCookie("sessionID");
String username = Cookies.getCookie("username");
if (sessionID != null && username != null){
AsyncCallback<UserInfo> callBack = new AsyncCallback<UserInfo>(){
@Override
public void onFailure(Throwable caught) {
Window.alert("Error connecting to server.");
}
@Override
public void onSuccess(Boolean sessionValid) {
if (sessionValid)
loadInitialInterfaceForUser("username");
else
loadLoginInterface();
}
};
loginSvc.checkSessionValidity(sessionID,username, callBack);
}
else
loadLoginInterface();
अब, यह सोचते हैं मैं अब तक क्या किया है सही है (जो एक लंबा शॉट का थोड़ा सा है: पी) मेरा असली सवाल यह है कि मुझे सर्वर की तरफ checkSessionValidity(sessionID,username)
पर क्या देखना चाहिए?
क्या यह उपयोगकर्ता को लाने का मामला है कि मैंने सर्वरसाइड को संग्रहीत किया है और sessionID
की तुलना sessionID
के साथ किया है, मैंने उपयोगकर्ता से जुड़ा है? क्या मैं यह भी जांचता हूं कि यह समाप्त नहीं हुआ है?
मैं जानता हूँ कि यह एक longwinded और शायद नहीं बहुत अच्छी तरह से शब्दों में सवाल यह है कि ... मैं इसे दौर मेरे सिर पाने के लिए संघर्ष कर रहा हूँ इसलिए किसी भी और सभी मदद बहुत स्वागत है!
चीयर्स, स्टीव
अरे यार धन्यवाद, उदाहरण चीज़ें थोड़ी साफ कर दिया है! एक बात मैं सोच रहा था जब उपयोगकर्ता लॉग आउट वह सत्र से उपयोगकर्ता निकाल देता है लेकिन sessionID कि उपयोगकर्ता के साथ डीबी में संग्रहीत किया जाता अमान्य नहीं है उदाहरण में है,? क्या यह भी नहीं किया जाना चाहिए? – SteveCallender
देखें कि आप दो उदाहरणों को मिश्रित कर रहे हैं, या तो आपको सत्र में बनाए रखना होगा या डीबी में सत्र आईडी को स्टोर करना होगा। दोनों की जरूरत नहीं है। –
आह ठीक है मैं देखता हूँ। इसलिए बशर्ते मैंने जांच की कि डीबी में संग्रहीत सत्र आईडी के खिलाफ कुकी में संग्रहीत सत्र आईडी को सत्र चर बनाए रखना नहीं है? – SteveCallender