2009-08-25 15 views
11

के साथ विभिन्न यूआरएल के लिए अलग लॉगिन यूआरएल मेरे पास एएसपी.नेट एमवीसी प्रोजेक्ट है, और मैं वेबसाइट के विभिन्न क्षेत्रों के लिए एक अलग लॉगिन यूआरएल चाहता हूं। साइट के क्षेत्र के आधार पर, विभिन्न प्रकार के प्रमाण-पत्र दर्ज किए जाते हैं।एएसपी.नेट एमवीसी और फॉर्म प्रमाणीकरण

http://host.com/widget/home उपयोगकर्ता को http://host.com/widget/logon पर रीडायरेक्ट करना चाहिए।

http://host.com/admin/home उपयोगकर्ता को http://host.com/admin/logon पर रीडायरेक्ट करना चाहिए।

अब तक का सबसे अच्छा समाधान मैं के साथ आए हैं, फार्म है प्रमाणीकरण loginUrl = "~/खाता/लॉग ऑन" web.config में:

<authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" timeout="2880"/> 
    </authentication> 

खाते के लिए नियंत्रक में:

public ActionResult LogOn() 
{ 
    //redirect depending on the returnUrl? 
    string returnUrl = ControllerContext.Controller.ValueProvider["ReturnUrl"].AttemptedValue; 
    if (returnUrl.StartsWith("/widget")) 
    { 
     return Redirect(string.Format("/widget/Logon?ReturnUrl={0}", returnUrl)); 
    } 
    if (returnUrl.StartsWith("/admin")) 
    { 
     return Redirect(string.Format("/admin/Logon?ReturnUrl={0}", returnUrl)); 
    } 
    return View(); 
} 

क्या ऐसा करने का कोई बेहतर तरीका है?

+1

बीटीडब्लू: आप केवल विधि के लिए स्ट्रिंग पैरामीटर के रूप में वापसी यूआरएल डाल सकते हैं: लॉगऑन (स्ट्रिंग रिटर्न यूआरएल) –

उत्तर

1

मुझे पता है कि आपके पास वेबसाइट के सब-फ़ोल्डर्स में अलग-अलग web.config फ़ाइलें हो सकती हैं, ताकि यदि आपके पास व्यवस्थापक/फ़ोल्डर के भीतर वास्तविक .aspx पृष्ठ हों, और उस फ़ोल्डर में web.config, तो आप निर्दिष्ट कर सकते हैं उस फ़ोल्डर में प्रमाणीकरण यूआरएल अलग से।

मुझे यकीन नहीं है कि यह एएसपी.नेट एमवीसी मार्गों के साथ काम करता है क्योंकि शायद आपके पास उन उप-फ़ोल्डर्स में भौतिक फाइल नहीं होने वाली हैं, लेकिन यह एक कोशिश के लायक है।

+2

एमवीसी क्षेत्रों में आपके पास अलग वेब.कॉन्फिग है लेकिन यदि आप जोड़ने का प्रयास करते हैं तो आप शायद त्रुटि के साथ समाप्त हो जाएंगे प्रमाणीकरण विशेषता: यह अनुप्रयोग स्तर से परे allowDefinition = 'MachineToAplication' के रूप में पंजीकृत अनुभाग का उपयोग करने में त्रुटि है। यह त्रुटि आभासी निर्देशिका के कारण आईआईएस में एक अनुप्रयोग के रूप में कॉन्फ़िगर नहीं किया जा सकता है। – Jafin

1

अपने कार्यों में प्रमाणित विशेषता जोड़ें।

फिर वैश्विक.एक्सएक्स में एप्लिकेशन_एट प्रमाणीकरण रिवेस्ट जोड़ें तो प्रेषक को देखें और वहां पर रीडायरेक्ट करें जहां आप लॉगिन करना चाहते हैं।

+0

मैं सिर्फ उत्सुक हूं, लेकिन ऐसा लगता है कि मैंने मूल रूप से किया था, बस एक अलग जगह पर। इस तरह से करने के क्या फायदे हैं? – mlsteeves

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