2013-03-04 11 views
9

काम नहीं कर रहा है मैंने एक मूल एमवीसी 4 प्रोजेक्ट बनाया है। HomeController और होम \ Index.cshtml और ContactUs.cshtml जोड़ा गया। ContactUs के लिए Global.asax में मार्ग जोड़ें।एमवीसी 4 ओवरराइड AuthorizeAttribute

फ़ोल्डर फ़ोल्डर जोड़ें और ऑथ फ़ोल्डर में एक वर्ग Auth.css जोड़ें।

using System; 
using System.Web; 
using System.Web.Http; 
using System.Net.Http; 


namespace MvcApplicationTestProject1 
{ 
    public class AuthAttribute : AuthorizeAttribute 
    { 
     //public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) 
     //{ 
     // HandleUnauthorizedRequest(actionContext); 
     //}   

     protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext) 
     { 
      var response = actionContext.Request.CreateResponse(System.Net.HttpStatusCode.Redirect); 
      response.Headers.Add("Location", "http://www.google.com"); 
      actionContext.Response = response; 
     } 
     //MVC 4 Web.Http.AuthorizeAttribute has IsAuthorized function but not AuthorizeCore 
     protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext) 
     { 
      return false; 
     } 
    } 
} 

HomeController

public class HomeController : Controller 
    { 
     // 
     // GET: /Home/ 

     public ActionResult Index() 
     { 
      return View(); 
     } 

     // 
     // GET: /Home/ 
     [Auth]  
     public ActionResult ContactUs() 
     { 
      return View(); 
     } 
    } 

में समस्या है जब कोड चलाने के लिए और पर जाएँ http: // localhost: [पोर्ट संख्या यहाँ]/होम/हमसे संपर्क करें, यह ओवरराइड वर्ग पर हिट नहीं करता AuthAttribute।

क्या कोड में कुछ गड़बड़ है?

+1

आप क्या हासिल करने की कोशिश कर रहे हैं? यह स्पष्ट नहीं है ... –

+0

मैं [प्राधिकरण] को [एथ] में अनुकूलित करने और इसे cotrollers पर उपयोग करने की कोशिश कर रहा हूं। यह मानक सदस्यता का उपयोग करने के बजाय मेरे अपने प्रमाणीकरण का निर्माण करने के लिए लचीलापन प्रदान करेगा। – user2130167

+0

यही वह है जिसे मैं प्राप्त करने का प्रयास करता हूं। केवल विचलन यह है कि यह एमवीसी 4 है लेकिन एमवीसी 3 के लिए नहीं है। http://weblogs.asp.net/jgalloway/archive/2012/05/04/asp-net-mvc- प्रमाणीकरण- अनुकूलन- प्रमाणीकरण- और- प्राधिकरण-the-right-way.aspx – user2130167

उत्तर

16

आपकी टिप्पणी कहती है कि आप this post में क्या हासिल करने की कोशिश कर रहे हैं, और फिर भी आपने उस पोस्ट से कोड कॉपी नहीं किया है, लेकिन पिछले एसओ पोस्ट से: Using custom authorization in MVC 4 जो वेब एपीआई का जिक्र कर रहा था। और उस पोस्ट को पढ़ने में आप अंतर देखते हैं कि आप किस प्राधिकरण एट्रिब्यूट का उपयोग करते हैं। आप System.Web.Mvc के बजाय System.Web.Http का उपयोग कर रहे हैं।

आप कोड है कि आप अपनी टिप्पणी में कहा गया है प्रयोग किया जाता है, तो आप यह काम करेगा पाते हैं:

using System.Web; 
using System.Web.Mvc; 

namespace MvcApplicationTestProject1 
{ 
    public class AuthAttribute : AuthorizeAttribute 
    { 
     protected override bool AuthorizeCore(HttpContextBase httpContext) 
     { 
      return false; 
     } 
    } 
} 
+0

बहुत बहुत धन्यवाद। यह अब ट्रिगर किया गया है। आपकी सहायता के लिए धन्यवाद. – user2130167

+0

@ उपयोगकर्ता2130167 एनपी। मुबारक प्रोग्रामिंग। – MikeSmithDev

+0

दोह! उसके लिए धन्यवाद। – AndyM