दिलचस्प पोस्ट
मैं एसिंक्रोनस, अजाक्स अनुरोध के बजाय एक तुल्यकालिक प्रदर्शन करने के लिए jQuery कैसे प्राप्त करूं? एनएसओपरेशन बनाम ग्रांड सेंट्रल डिस्पैच iframe से अभिभावक में Fancybox को कॉल करें याहू वित्त वेब सेवा गायब हो गया है? एपीआई बदल गया है? अस्थायी रूप से नीचे? सूचना पट्टी में एनीमेशन कस्टम व्यू मैं कमांड लाइन से आईओएस सिम्युलेटर को कैसे रीसेट कर सकता हूं? एंड्रॉइड: एक बटन या छवि बटन पर पाठ और छवि का संयोजन JQuery.ajax और FormData का उपयोग कर फ़ाइल कैसे अपलोड करें मोंगो डीबी में, आप अपने इंडेक्स से सरणी तत्व कैसे निकाल सकते हैं एंड्रॉइड अनुमतियां: फोन कॉल: फ़ोन स्थिति और पहचान पढ़ें सूची और ArrayList के बीच अंतर क्या है? जावास्क्रिप्ट / jQuery के साथ स्टाइलशीट (एक <link>) को निकालकर या बदलना पायथन में मौजूदा मॉड्यूल के गुणों का संदर्भ कैसे प्राप्त करें I सी # में एक फ़ाइल का नाम बदलें प्रोग्रामेटिक रूप से संबंधित लेआउट में एक दूसरे के नीचे देखें

एएसपी.NET MVC 4 अनुमति कोड के साथ कस्टम ऑथराइज विशेषता (बिना भूमिकाओं)

मुझे अपने एमवीसी 4 एप्लिकेशन में उपयोगकर्ताओं के विशेषाधिकार स्तर (कोई भूमिका नहीं है, उपयोगकर्ताओं को निर्दिष्ट सीआरयूडी ऑपरेशन स्तरों के लिए केवल विशेषाधिकार स्तर हैं) के आधार पर विचारों तक पहुंच को नियंत्रित करने की आवश्यकता है I

नीचे दिए गए उदाहरण के रूप में AuthorizeUser मेरा कस्टम विशेषता एबीडी होगा I इसे नीचे की तरह उपयोग करना होगा I

[AuthorizeUser(AccessLevels="Read Invoice, Update Invoice")] public ActionResult UpdateInvoice(int invoiceId) { // some code... return View(); } [AuthorizeUser(AccessLevels="Create Invoice")] public ActionResult CreateNewInvoice() { // some code... return View(); } [AuthorizeUser(AccessLevels="Delete Invoice")] public ActionResult DeleteInvoice(int invoiceId) { // some code... return View(); } 

क्या ऐसा करना संभव है? कैसे? अग्रिम में धन्यवाद…

Chatura

वेब के समाधान से एकत्रित समाधान "एएसपी.NET MVC 4 अनुमति कोड के साथ कस्टम ऑथराइज विशेषता (बिना भूमिकाओं)"

मैं ऐसा एक कस्टम विशेषता के साथ निम्नानुसार कर सकता हूं।

 [AuthorizeUser(AccessLevel = "Create")] public ActionResult CreateNewInvoice() { //... return View(); } 

कस्टम एट्रिब्यूट क्लास निम्नानुसार है।

 public class AuthorizeUserAttribute : AuthorizeAttribute { // Custom property public string AccessLevel { get; set; } protected override bool AuthorizeCore(HttpContextBase httpContext) { var isAuthorized = base.AuthorizeCore(httpContext); if (!isAuthorized) { return false; } string privilegeLevels = string.Join("", GetUserRights(httpContext.User.Identity.Name.ToString())); // Call another method to get rights of the user from DB return privilegeLevels.Contains(this.AccessLevel); } } 

आप HandleUnauthorizedRequest विधि को ओवरराइड करके एक अनधिकृत उपयोगकर्ता को अपने कस्टम AuthorisationAttribute में रीडायरेक्ट कर सकते हैं:

 protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary( new { controller = "Error", action = "Unauthorised" }) ); } 

यहां पिछले के लिए एक संशोधन है जवाब। मुख्य अंतर तब होता है जब उपयोगकर्ता को प्रमाणित नहीं किया जाता है, यह लॉगिन पेज पर रीडायरेक्ट करने के लिए मूल "हैंडलयूनाधिकृतरूट" विधि का उपयोग करता है:

  protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { if (filterContext.HttpContext.User.Identity.IsAuthenticated) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary( new { controller = "Account", action = "Unauthorised" }) ); } else { base.HandleUnauthorizedRequest(filterContext); } }