2014-10-05 7 views
5

मैं servlets का उपयोग कर पंजीकरण पृष्ठ बनाने की कोशिश कर रहा हूं। मैंने एक मूल HTML पृष्ठ बनाया है जिसमें उपयोगकर्ता नाम और पासवर्ड के लिए इनपुट वाला एक फॉर्म है। अब मुझे कुकीज़/सत्रों का उपयोग करके फ़ॉर्म में जमा की गई जानकारी को स्टोर करना है। फिर लॉग-इन पेज पर, उपयोगकर्ता पहले प्रदान की गई जानकारी का उपयोग करके लॉगिन करने में सक्षम होना चाहिए। तो मूल रूप से मुझे यह जानने की आवश्यकता है कि उपयोगकर्ता नाम और पासवर्ड कैसे स्टोर करें।कुकीज/सत्रों का उपयोग करके उपयोगकर्ता नाम, पासवर्ड को संग्रहीत करना - जावा सर्वलेट

इसलिए यदि मैं उपयोगकर्ता नाम: व्यवस्थापक और पासवर्ड 123 के साथ पंजीकरण कर रहा था, और फिर उपयोगकर्ता नाम के साथ पंजीकरण करें: उपयोगकर्ता और पासवर्ड: 12345, मुझे व्यवस्थापक और 12345 या उपयोगकर्ता और 123 के साथ लॉगिन करने में सक्षम नहीं होना चाहिए। धन्यवाद !!

HTML प्रपत्र

<html> 
    <head> 
     <title>Registration</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    </head> 
    <body bgcolor="lightblue"> 

    <center> 
     <h1></h1> 
     <br> 

     <hr> 
     <br><br> 
     <form action="/Registration" method="get"> 
      <h3> Please register to start </h3> 
Username: <input type="text" name="userName"> 
<br> 
Password: <input type="password" name="password"> 
<br> 
<br> 
<input type="submit" value="Register"> 
<br><br> 
</form> 
    </center> 
    </body> 
</html> 

जावा सर्वलेट

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 

     // Create cookies for first and last names.  
     Cookie userName = new Cookie("userName", 
         request.getParameter("userName")); 
     Cookie password = new Cookie("password", 
         request.getParameter("password")); 

     // Set expiry date after 24 Hrs for both the cookies. 
     userName.setMaxAge(60*60*24); 
     password.setMaxAge(60*60*24); 

     // Add both the cookies in the response header. 
     response.addCookie(userName); 
     response.addCookie(password); 
+0

स्टैक ओवरफ़्लो में आपका स्वागत है। यह साइट विशिष्ट उत्तरों के साथ _specific_ प्रश्नों की ओर तैयार है। आपने हमें काफी उच्च स्तर की आवश्यकता और कोड की दीवार दी है, जो इस साइट के लिए ऑफ-विषय है। आपको कुछ ट्यूटोरियल्स पर पढ़ना चाहिए, इसे आज़माएं, और यदि आपके पास एक विशिष्ट सवाल है, तो आप इसे यहां पूछ सकते हैं। चेतावनी का एक शब्द: सुरक्षा के साथ कुछ भी करना मुश्किल है, और इसे गलत करने के नतीजे बहुत गंभीर हैं, इसलिए आप एक ढांचे का उपयोग करना बेहतर कर सकते हैं जो आपके लिए इसे संभालता है। – yshavit

उत्तर

4

कुकीज़ क्लाइंट की तरफ जमा हो जाती है और प्रत्येक अनुरोध के साथ सर्वर के लिए भेजा जाता है। कुकीज़ में पासवर्ड जोड़ने का अच्छा अभ्यास नहीं है क्योंकि उन्हें आसानी से अवरुद्ध किया जाता है और कई मामलों में साइट छोड़ने के बाद भी उपयोगकर्ता ब्राउज़र में रहते हैं।

आपको एक सत्र पर भरोसा करना चाहिए, जावा ईई आपको उपयोगकर्ता के साथ एक सत्र बनाने की अनुमति देता है जहां से यह एक सत्र आईडी संग्रहीत करेगा जिसे उसके बाद प्रत्येक अनुरोध के साथ भेजा जाता है। आप इसके बजाय सर्वर पर उस उपयोगकर्ता के बारे में जानकारी स्टोर कर सकते हैं।

यहां अपना कोड का उपयोग करना है कि आप सत्र कैसे बना सकते हैं।

// get the session, add argument `true` to create a session if one is not yet created. 
HttpSession session = request.getSession(true); 

session.setAttribute("userName", request.getParameter("userName")); 
session.setAttribute("password", request.getParameter("password")); 

// to get the username and password 
String userName = session.getAttribute("userName"); 
String password = session.getAttribute("password"); 

अब निश्चित रूप से आप चीजों को इस तरह से जब आप स्पष्ट अपने सर्वर कैश उपयोगकर्ता नाम और पासवर्ड को मिटा दिया जाएगा करते हैं। सर्वर कैश में भी गैर एन्क्रिप्टेड पासवर्ड निश्चित रूप से सुरक्षा चिंताओं हैं।


संपादित करें:

नहीं, कोड ऊपर अच्छी तरह से काम नहीं होता 2 लोग तो उसी कंप्यूटर का उपयोग करना हो तो। ऐसा इसलिए है क्योंकि उपयोगकर्ता प्रमाण-पत्र केवल सत्र में संग्रहीत होते हैं, सत्र समाप्त होने के बाद या सत्र में डेटा ओवरराइट होने के बाद कुछ भी नहीं होता है। कल्पना करें कि सत्र एक ऐसा ऑब्जेक्ट है जो सीधे प्रत्येक उपयोगकर्ता से जुड़ा हुआ है। तो अभी मैं स्टैक ओवरफ्लो पर हूं जहां कहीं भी उनके कोड में मेरे और मेरे ब्राउज़र (सत्र!) के लिए एक विशेष वस्तु है, सत्र ऑब्जेक्ट में कुछ और कहता है जो वर्तमान में लॉग इन उपयोगकर्ता है। मैं आपको इस बारे में सोचना चुनौती देता हूं कि आप सत्र के बाहर उपयोगकर्ताओं के क्रेडेंशियल्स को कैसे स्टोर कर सकते हैं और इसके बजाय वर्तमान में लॉग इन उपयोगकर्ता को सत्र के अंदर स्टोर कर सकते हैं।

सत्रों के बारे में अधिक जानने के लिए और वे कैसे काम करते हैं, यहां एक अच्छा जवाब है: What are sessions? How do they work?

+0

आपके उत्तर के लिए धन्यवाद! यदि एक से अधिक उपयोगकर्ता एक ही सत्र के दौरान पंजीकरण करना चाहते थे, तो क्या यह कोड काम करेगा?इसके अलावा मुझे यह त्रुटि मिल रही है प्रतीक प्रतीक नहीं मिल सकता है: विधि addAttribute (स्ट्रिंग, स्ट्रिंग) स्थान: प्रकार का परिवर्तनीय सत्र HttpSession – newbdeveloper

+1

यह session.setAttribute(), addAttribute() नहीं है; –

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