आप अपनी खुद की विस्तार विधि लिख सकते हैं और इसे अपने कोड में इस्तेमाल कर सकते हैं।
public static class PrincipalExtensions
{
public static bool IsInAllRoles(this IPrincipal principal, params string[] roles)
{
return roles.All(r => principal.IsInRole(r));
}
public static bool IsInAnyRoles(this IPrincipal principal, params string[] roles)
{
return roles.Any(r => principal.IsInRole(r));
}
}
अब बस आप इस तरह इस विस्तार विधि कह सकते हैं:
// user must be assign to all of the roles
if(User.IsInAllRoles("Admin","Manager","YetOtherRole"))
{
// do something
}
// one of the roles sufficient
if(User.IsInAnyRoles("Admin","Manager","YetOtherRole"))
{
// do something
}
आप के रूप में अच्छी तरह से विचारों में इन विस्तार तरीकों का उपयोग लेकिन विचारों में अपने एप्लिकेशन तर्क लेखन से बचने के लिए के रूप में ज्यादा संभव के रूप में की कोशिश कर सकते जबकि चूंकि विचार आसानी से इकाई परीक्षण योग्य नहीं हैं।
स्रोत
2015-09-03 20:42:27
समाधान के लिए बहुत बहुत धन्यवाद :) देर से उत्तर के लिए खेद है। क्योंकि मैं कुछ दिनों के लिए stackoverflow नहीं आ सकता था। – Isuru
मैंने प्राधिकृत विशेषता में समान स्ट्रिंग का उपयोग करने के लिए इसे उपयोग करने में सक्षम होने के लिए थोड़ा सा बदल दिया: 'प्राधिकरण (भूमिकाएं =" समूह 1, समूह 2, समूह 3 ")'। आप मेरा संस्करण [यहां] (https://gist.github.com/depuits/8ae37a2db0a44abea6bfc30c72349f27) पा सकते हैं। इस तरह आप इसका भी उपयोग कर सकते हैं: 'User.IsInAnyRoles (" group1, group2, group3 ")' – ColmanJ