2011-05-06 7 views
20

क्या मेरे पास अलग-अलग एएसपी .NET MVC3 क्षेत्रों के लिए अलग-अलग लॉगिन यूआरएल हो सकता है?विभिन्न एएसपी.नेट एमवीसी 3 क्षेत्रों के लिए अलग-अलग लॉगिन पेज होने के बाद

उदा। मैं प्रशासक और डेटा एंट्री ऑपरेटरों के लिए अलग लॉगिन पेज चाहता हूं।

मैं प्रत्येक क्षेत्र के दृश्य भाग में एक web.config देख सकते हैं और मैं कर की कोशिश की है:

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

लेकिन यह अच्छी तरह से नहीं चलता है।

चीयर्स।

+0

जिज्ञासा मुझे सबसे अच्छा मिल रही है; आपको ऐसा करने के लिए आवश्यक विशेष कारण साझा करने की परवाह है? –

+0

बाकी उपयोगकर्ताओं से सुपर व्यवस्थापक लॉगिन/पूर्ण इंटरफ़ेस को अलग करने की आवश्यकता है - सभी भूमिकाओं के लिए अलग-अलग क्षेत्रों का उपयोग कर रहा हूं; – effkay

उत्तर

28

मैं तुम्हारे लिए इस से निपटने नेट के बारे में पता नहीं कर रहा हूँ, लेकिन आप एक कस्टम AuthorizationAttribute

public class CustomAuthorization : AuthorizeAttribute { 

    public string Url { get; set; } 

    public override void OnAuthorization(AuthorizationContext filterContext) { 

    if (!filterContext.HttpContext.User.Identity.IsAuthenticated) { 
     filterContext.HttpContext.Response.Redirect(Url); 
    } 
    base.OnAuthorization(filterContext); 

    } 

} 

एक अपने नियंत्रकों में जोड़ देते हैं/कार्यों

[CustomAuthorization(Url="/Area/Login")] 
public class HomeController { 
    //... 
} 
+0

वूहू ... मैं इन पंक्तियों पर सोच रहा था ... lemme देखें कि क्या मैं इसे हल करने में सक्षम हूं ...... यदि मैं कर सकता हूं, तो आप अपने अंक प्राप्त करेंगे :) – effkay

+0

हैंडल अनधिकृतकृत अनुरोध ओवरराइड नहीं इसे संभालने के लिए एक बेहतर जगह हो? –

8

मेरे समाधान पर आधारित था बना सकते हैं डेविड ग्लेन द्वारा प्रस्तुत समाधान, धन्यवाद।

public class CustomAuthorization : AuthorizeAttribute 
{ 
    public string Url { get; set; } 

    // redirect to login page with the original url as parameter. 
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 
     filterContext.Result = new RedirectResult(Url + "?returnUrl=" + filterContext.HttpContext.Request.Url.PathAndQuery); 
    } 
} 

और अपने नियंत्रकों के गुण जोड़ने/कार्यों

[CustomAuthorization(Url="/Area/Login")] 
public class HomeController { 
    //... 
} 

है filterContext.HttpContext.Response.Redirect (यूआरएल) की तुलना में बेहतर उपयोग filterContext.Result रीडायरेक्ट करने के लिए क्योंकि वर्तमान फिल्टर करने के लिए तुरंत रीडायरेक्ट करेगा लॉगिन पृष्ठ अन्यथा मूल कार्रवाई को कॉल किया जाएगा और केवल तब लॉगिन पृष्ठ पर रीडायरेक्ट किया जाएगा।

+0

यह वास्तव में उपयोगी है – Ever

+0

यह बेहतर है। – Diryboy

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

  • कोई संबंधित समस्या नहीं^_^