मैं अपने एमवीसी अनुप्रयोग के लिए एक नई अनुमति आधारित पहुंच दृष्टिकोण को लागू करने की कोशिश कर रहा हूं; हमारे पास कई अनुमति समूह और प्रत्येक समूह में की अनुमति है। उदाहरण के लिए हमारे पास Invoices
अनुमति समूह है जिसमें CreateInvoice,RemoveInvoice,etc
अनुमति कुंजी शामिल हैं।सी # विशेषताएं: इनपुट पैरामीटर के रूप में enum स्थिरांक का उपयोग
इस दृष्टिकोण में प्रत्येक एमवीसी Action
निष्पादन के लिए एक विशिष्ट अनुमति की आवश्यकता होनी चाहिए। मैं कुछ इस तरह CustomAttributes के माध्यम से ऐसा करने के लिए, कोशिश कर रहा हूँ:
public class InvoiceController : Controller
{
[RequirePermission(Permissions.Invoices.CreateInvoice)]
public ActionResult Create()
{
return View();
}
}
यह आसान डेवलपर्स अलग अनुमति समूह और अनुमति कुंजी याद करने के लिए मैं अनुमतियों की एक पूर्व निर्धारित सूची बनाने के लिए कोशिश कर रहा हूँ के लिए बनाने के लिए है कि ऐसा करना चाहिए अनुमति समूह और अनुमति कुंजी का संयोजन बनें। लेकिन सी # में विशेषताओं के तर्कों का उपयोग करने के लिए लागू प्रतिबंधों के कारण मैं इसे अभी तक काम नहीं कर सका।
मेरा आखिरी कोशिश प्रत्येक अनुमति समूह के लिए एक प्रगणक बनाने गया था और फिर वहाँ में enum स्थिरांक के रूप में अनुमति कुंजी को परिभाषित (मैं एक अतिरिक्त बड़ी enumurator बनाने के लिए और वहाँ के सारे अनुमति चाबियाँ डाल नहीं करना चाहती):
public class PermissionEnums
{
[PermissionGroup(PermissionGroupCode.Invoice)]
public enum Invoices
{
CreateInvoice = 1,
UpdateInvoice = 2,
RemoveInvoice = 3,
ManageAttachments = 4
}
[PermissionGroup(PermissionGroupCode.UserAccounts)]
public enum UserAccounts
{
Create = 1,
ChangePassword = 2
}
}
जैसा कि आप देख सकते हैं कि हमारे पास कोड का संयोजन है, PermissionGroup
विशेषता और अनुमति कुंजी कोड प्रत्येक एनम निरंतर पर अंक कोड के रूप में निर्दिष्ट अनुमति समूह कुंजी निर्दिष्ट है।
RequirePermission विशेषता नीचे के रूप में परिभाषित:
public class RequirePermissionAttribute : Attribute
{
private Enum _Permission;
public RequirePermissionAttribute(Enum Permission)
: base()
{
_Permission = Permission;
}
}
लेकिन समस्या यह है कि प्रकार Enum
की वस्तुओं गुण तर्क के रूप में इस्तेमाल नहीं किया जा सका है।/खेद:
कोई भी सुझाव/विचार
हां, मुझे लगता है कि किया है लेकिन मेरी समस्या एक विशेषता (ActionFilter विशेषता) बनाने की जांच नहीं कर रहा है उपयोगकर्ता अनुमतियां पूर्वनिर्धारित अनुमति स्थिरांक बनाने के लिए मुझे बस एक बेहतर तरीका (सादा स्ट्रिंग कुंजियों का उपयोग करने की आवश्यकता है) की आवश्यकता है। – sos00
http: //www.vivienchevallier।com/articles/create-a-custom-authorizeattribute-that-accepts-parameters-of-type-enum इसे आज़माएं। – AdrianCogiel