2012-02-20 17 views
6

मैं लॉग इन होने पर उपयोगकर्ता स्क्रीन के शीर्ष पर टूलबार प्रस्तुत करने का प्रयास कर रहा हूं, जहां वे अपने खाते तक पहुंच सकते हैं आदि। यदि वे लॉग इन नहीं हैं, तो यह उन्हें एक फॉर्म प्रदर्शित करेगा लॉग इन करने के लिए। मुझे पूरी तरह से यकीन नहीं है कि सी # और रेजर का उपयोग करके इसे कैसे करें और सिंटैक्स और संकलन त्रुटियों को मारते रहें।जांच कर रहा है कि कुकी सेट है

मेरा वर्तमान रूप निम्नानुसार है: मेरे पास एक फ़ाइल है, _siteLayout.cshtml। यह स्क्रीन के शीर्ष पर टूलबार स्टोर करता है। यह बाहरी डेटाबेस के खिलाफ लॉगिन फॉर्म की जांच करता है और यदि यह प्रमाणित है, तो बनाता है क्लाइंट को कुकी देता है। प्रपत्र मैं अनिवार्य रूप से चाहते हैं

if(user logged in) 
    render account management page 
else{ 
    render login page 
} 

सरल है, लेकिन मैं समस्याओं का एक बहुत में चल रहा हूँ। यहां मेरा कोड है, थोक को हटा रहा है, अब तक:

<body> 
    @using System.Text; 
    @using System.Net.Sockets; 
    @{ 
     if(Request.Cookies["mpUsername"] == null){ 
     //if user is not logged in 
      //some authentication is ran, if passed, isValid is set to true  
       if (isValid) { 
        //login is valid, set cookie 
        HttpCookie cookie = Request.Cookies.Get("mpUsername"); 
       if(cookie == null) { 
        cookie = new HttpCookie("mpUsername"); 
        cookie.Value = username; 
        cookie.Expires = DateTime.Now.AddDays(3); 
        Response.Cookies.Add(cookie); 
       } 
       } else { 
        //login invalid, prompt for pass again 
       <text>Password incorrect, please try again</text> 
       } 
      } 
    } 
    }//end of razor, HTML begins 
    <html> 
     <body> 
     @{ //if cookie is set 
      //if(Request.Cookies["mpUsername"] == null){ 

     } 
     <h2>ACCOUNT MANAGEMENT</h2> 
     @{ 
      } else {//user not logged in, cookie not set 
     } 
     //login form 
     </body> 
    </html> 

मैं जो करना चाहता हूं उसका सबसे अच्छा तरीका क्या है? मेरे वास्तविक कोड में, लॉगिन फॉर्म और खाता प्रबंधन पृष्ठ स्पष्ट रूप से बहुत बड़े हैं, इसलिए यह थोड़ा और भ्रमित है, इसलिए मैंने उपरोक्त कोड से इन्हें क्यों हटा दिया।

+2

क्या आपने फॉर्म प्रमाणीकरण का उपयोग करने पर विचार किया है? http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx –

+0

हां, हालांकि मुझे नहीं लगता कि यह समर्थन करेगा कि मैं कैसे प्रमाणीकरण चलाने के लिए चाहता हूं - मैं उपयोगकर्ताओं की लॉगिन जानकारी की पुष्टि कर रहा हूं एक स्थानीय रूप से संग्रहीत एक के बजाय रिमोट सर्वर के खिलाफ। –

+1

मैं पॉली से सहमत हूं - निर्मित सिस्टम का उपयोग करें। कुछ याद करना बहुत आसान है/एक सुरक्षा छेद खुला छोड़ दें। – Paddy

उत्तर

0

इससे आपको Cookies in ASP.NET using C# सीखने में मदद मिलेगी।

+1

जबकि प्रदान किया गया लिंक एक अच्छा संसाधन है, यहां तक ​​कि उस पृष्ठ को स्थानांतरित किया गया है, पृष्ठ पर एक उत्तर प्रदान करना और अधिक जानकारी के लिए स्रोत के रूप में लिंक का संदर्भ देना एक अच्छा विचार है। – mgrenier

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