दिलचस्प पोस्ट
कैसे homebrew अनुमतियों को ठीक करने के लिए? जावा में स्विंग जीयूआई के लिए पृष्ठभूमि के रूप में एक छवि कैसे सेट करें? एंड्रॉइड जेपीजी या पीएनजी को देखने के लिए बचाओ OpenCV त्रुटि: फ़ंक्शन कार्यान्वित नहीं है Moq में आउट / रेफरे पैरामीटर निर्दिष्ट करना दृश्य स्टूडियो में, मैं एक संपूर्ण फ़ोल्डर के लिए बिल्ड एक्शन कैसे सेट कर सकता हूं? मैं यह कैसे पता लगा सकता हूं कि एंड्रॉइड फोन साइलेंट मोड में प्रोग्रामेटिक रूप से है mysqli परिणाम json के लिए परिवर्तित डिफ़ॉल्ट समापन बिंदु तत्व नहीं मिला URL पैरामीटर बदलें दो एनएसडीट्स की तुलना करना और समय घटक की अनदेखी करना decltype और कोष्ठक mysql – बोली संख्याएं या नहीं? SQL में कोई उत्पाद समेकित कार्य क्यों नहीं है? नमेनोड शुरू नहीं हो रहा है

एएसपी.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); } }