दिलचस्प पोस्ट
एक्सेल तालिका पर एसक्यूएल चलाएँ एक matplotlib आकृति विंडो में आसानी से नेविगेशन टूलबार को कैसे संशोधित करें? 'entityForName: शून्य कोई कानूनी NSManagedObjectContext पैरामीटर नहीं है – कोर डेटा SQL सर्वर में डुप्लिकेट पंक्तियाँ ढूँढना सी # – विंडोज 64 बिट पर प्रोग्राम फाइल (एक्स 86) कैसे प्राप्त करें I मैं अपने ArrayList थ्रेड-सेफ कैसे बना सकता हूं? जावा में समस्या के लिए एक और तरीका है? सुनो () बैकलॉग तर्क को अनदेखा करता है? बहिर्गमन दोष सी ++ ओपनसीवी पाठ फ़ाइल की अंतिम पंक्ति पढ़ें चेतावनी: सीएसआरएफ टोकन प्रामाणिकता रेल को सत्यापित नहीं किया जा सकता स्पार्क का उपयोग करने वाले मध्य और मात्रा का पता कैसे करें Jquery: एक वेबसर्वर के बिना स्थानीय रूप से AJAX चल रहा है क्या डब्लूपीएफ में संदेशबॉक्सेज़ है? मैं ggplots के एक 'असंतुलित' ग्रिड कैसे प्राप्त कर सकता हूं? PHP से एक पायथन स्क्रिप्ट चलाना

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

Solutions Collecting From Web of "एएसपी.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); } }