2012-05-19 4 views
7

मैं किसी कंपनी में उपयोग होने वाली प्रोजेक्ट पर काम कर रहा हूं। सिस्टम में केवल 1 व्यवस्थापक खाता होगा।asp.net mvc प्रोजेक्ट के साथ कैसे काम करें, जिसमें केवल एक उपयोगकर्ता है

व्यवस्थापक सिस्टम उपयोगकर्ताओं को जोड़ देगा और प्रत्येक उपयोगकर्ता अपना संपर्क बना सकता है।

मैंने डेटाबेस से कनेक्ट करने के लिए एक डब्ल्यूसीएफ सेवा बनाई, व्यवस्थापक के लिए एएसपीनेट एमवीसी 3 प्रोजेक्ट और सिस्टम उपयोगकर्ताओं के लिए एक और डब्ल्यूपीएफ ऐप बनाया।

मेरे सवालों का है:

मैं केवल एक उपयोगकर्ता (व्यवस्थापक) इस asp.net MVC के परियोजना के साथ लॉग इन करना: मैं इस स्थिति से कैसे काम करते हैं?

मुझे लगता है कि सदस्यता प्रदाता और डेटाबेस की आवश्यकता नहीं है क्योंकि मैं केवल एक उपयोगकर्ता के साथ काम कर रहा हूं, है ना ??

+1

यदि आप कोड नमूने प्रदान करते हैं तो आपको बेहतर उत्तर मिलेंगे। – robrich

+3

@robrich आपको इस प्रश्न के लिए कोड क्यों चाहिए? – tito11

+0

क्यों वोट नीचे ??? – tito11

उत्तर

8

इस प्रयास करें:

web.config:

<authentication mode="Forms"> 
    <forms loginUrl="~/Admin/LogOn" timeout="2880" > 
    <credentials passwordFormat="SHA1"> 
     <user name="admin" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"/> 
    </credentials> 
    </forms> 
</authentication> 

पासवर्ड स्वरूप SHA1 पर सेट किया जाता है, तो आपका पासवर्ड स्पष्ट पाठ में नहीं दिखाई देंगे। हालांकि यह अभी भी क्रैक किया जा सकता है। उदाहरण के लिए ऑनलाइन SHA1 जनरेटर का उपयोग करके अपना खुद का हैश उत्पन्न करें।

loginUrl आपके लॉगिन पेज (duh: P) का मार्ग है, इसलिए यदि यह अलग है तो इसे बदलें।

CredentialsViewModel: आपका प्रवेश दृश्य के लिए

public class CredentialsViewModel 
{ 
    [Required] 
    public string UserName { get; set; } 

    [Required] 
    [DataType(DataType.Password)] 
    public string Password { get; set; } 
} 

देखें मॉडल।

AdminController:

public ViewResult LogOn() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult LogOn(CredentialsViewModel model, string returnUrl) 
{ 
    if(ModelState.IsValid) 
    { 
     if(FormsAuthentication.Authenticate(model.UserName, model.Password)) 
     { 
      FormsAuthentication.SetAuthCookie(model.UserName, false); 
      return Redirect(returnUrl ?? Url.Action("Index", "Admin"));     
     } 
     else 
     { 
      ModelState.AddModelError("", "Incorrect username or password"); 
     } 
    } 

    return View(); 
} 

[Authorize] 
public ViewResult Index() 
{ 
    return View(); 
} 

तो लॉगऑन क्रिया देखने से पारित कर दिया साख को प्रमाणित करेगा; web.config डेटा के साथ इसकी तुलना करें।

महत्वपूर्ण हिस्सा यहां [Authorize] विशेषता है जो अनधिकृत उपयोगकर्ताओं से पहुंच को रोक देगा।

+0

एक से अधिक उपयोगकर्ता के लिए भी अच्छा काम करता है, जब तक कि उन उपयोगकर्ताओं के क्रेडेंशियल पत्थर में सेट होते हैं और वहां ' बहुत अधिक टी। बहुत बहुत धन्यवाद! – ElliotSchmelliot

0

गैर-व्यवस्थापक खातों को संभालने के लिए आपको निश्चित रूप से उपयोगकर्ता तालिका की आवश्यकता होगी। व्यवस्थापक तालिका को इस तालिका में जोड़ने के लिए भी छोटा होगा, और "IsAdmin" लेबल वाला एक कॉलम जोड़ें जहां केवल वह सत्य पर सेट हो। सदस्यता और भूमिका प्रदाता यह अच्छी तरह से कर सकते हैं, और जो भी आपको चाहिए, उसे बनाने के लिए तेज़ी से हो सकता है, हालांकि वे आपके पूरे डेटाबेस में बार्फ़ करते हैं।

.. एक साइड-नोट के रूप में, हालांकि आप पूरी तरह से भरोसेमंद हैं, फिर भी केवल एक व्यवस्थापक खाता होगा, मुझे संदेह है कि आवश्यकता अंततः बदल जाएगी, और शायद बिना किसी सूचना के।

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