2011-07-21 8 views
15

मैं एएसपी.नेट के लिए नया ब्रांड हूं, और मैं साइट पर किसी भी पेज से लॉगऑन पेज पर किसी अनधिकृत उपयोगकर्ता को आसानी से रीडायरेक्ट करने का तरीका ढूंढने का प्रयास कर रहा हूं। यदि कोई अन्य विकल्प है तो मैं प्रत्येक HTTP GET फ़ंक्शन में निम्न कोड नहीं डालना पसंद करूंगा।एमवीसी 3 में प्रमाणीकृत नहीं होने पर आसानी से रीडायरेक्ट कैसे करें?

if (!Request.IsAuthenticated) 
{ 
    return RedirectToAction("LogOn", "Account"); 
} 

उत्तर

30

साथ मार्क अपने नियंत्रक [Authorize] विशेषता http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx

अपने web.config देखें, डिफ़ॉल्ट रूप से आप प्रपत्र प्रमाणीकरण होना चाहिए authentication mode="Forms"http://msdn.microsoft.com/en-us/library/eeyk640h.aspx

चालू इसके अलावा इस सवाल ASP.NET MVC Authorization

को देखो

यदि आप कस्टम व्यवहार अधिकृत करना चाहते मामले में यहां Customizing authorization in ASP.NET MVC

12

आप प्रत्येक कार्य को प्रमाणीकृत करने की जरूरत है कि अधिक [Authorize] विशेषता रख सकते हैं।

इसके अलावा, कि इस खंड अपने web.config में परिभाषित किया गया है सुनिश्चित करें:

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

बिल्कुल सही, और बस स्पष्ट करने के लिए - इस config अनुभाग रखा जाना चाहिए "system.web" के भीतर। – tltjr

3

देखो मैं तो बस इस की कोशिश की:

<!-- using custom auth with MVC redirect --> 
<authentication mode="None"> 
    <forms loginUrl="~/Home/Index"/> 
</authentication> 

और यह अभी भी, काम करता है, हालांकि मैं कस्टम प्रमाणन उपयोग कर रहा हूँ। हालांकि टाइमआउट के बारे में निश्चित नहीं है - क्या [अधिकृत] अभी भी फॉर्म ऑथ के लिए डिफ़ॉल्ट का उपयोग करेगा या यह टाइमआउट प्रबंधित नहीं करेगा (कस्टम ऑथ के लिए पसंदीदा व्यवहार)।

0

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

if (!User.Identity.IsAuthenticated) 
{ 
    //return new HttpUnauthorizedResult(); //This or the below statement should redirect the user to forms login page 
    return new HttpStatusCodeResult(System.Net.HttpStatusCode.Unauthorized); 
} 
संबंधित मुद्दे