2014-09-09 9 views
5

एमवीसी 4 में मैंने भूमिका निभाई है IISUserInRole यह जांचने के लिए कि कोई दिया गया उपयोगकर्ता कुछ भूमिका में है या नहीं। हालांकि, एमवीसी 5 के साथ मैं अब और नहीं कर सकता ...एमवीसी 5 - भूमिकाएं - IsUserInRole और उपयोगकर्ता को भूमिका में जोड़ने

सबसे पहले, उसने मुझे web.config पर RoleManager को सक्षम करने के लिए कहा लेकिन फिर मुझे पता चला कि माइक्रोसॉफ्ट वेब से दूर चले गए हैं। सुरक्षा से माइक्रोसॉफ्ट.एस्पनेट.इडेन्टिटी ।

मेरा प्रश्न अब माइक्रोसॉफ्ट.एस्पनेट.इडेन्टिटी के साथ है, मैं भूमिकाओं के समान क्रिया कैसे करता हूं। आईएसयूसर इनरोल? और/या भूमिका और उपयोगकर्ता के बीच संबंध बनाते हैं।

वैसे, मैं अभी भी नए प्रमाणीकरण विधियों (दावों की मात्रा?) को समझने की कोशिश कर रहा हूं।

उत्तर

10

आपको पहचान 2.0 की मूल बातें के लिए http://typecastexception.com/post/2014/04/20/ASPNET-MVC-and-Identity-20-Understanding-the-Basics.aspx पढ़ना चाहिए!

वहाँ भी प्राप्त करने के लिए एक पूरा डेमो परियोजना आप शुरू कर दिया है:

var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
const string name = "YourUsername" 
const string roleName = "Admin"; 

var user = userManager.FindByName(name); 
//check for user roles 
var rolesForUser = userManager.GetRoles(user.Id); 
//if user is not in role, add him to it 
if (!rolesForUser.Contains(role.Name)) 
{ 
    userManager.AddToRole(user.Id, role.Name); 
} 
+0

ठीक है, यह काम किया ... धन्यवाद। वैसे, प्राधिकृत विशेषता काम नहीं कर रही है ... कोई विचारधारा? मैं अभी लेख नहीं पढ़ सकता, लेकिन मैं इसे ऊपर से नीचे Asap तक पढ़ूंगा। –

+1

मेरा सुझाव है कि आप इस समस्या के लिए पर्याप्त विवरण के साथ एक और प्रश्न पूछें, क्योंकि मैं यहां जो भी करूँगा वह अनुमान लगा रहा है। – Marco

+0

ठीक है धन्यवाद मैंने पोस्ट बनाया है http://stackoverflow.com/questions/25743113/mvc-5-roles-authorizeattribute-outdated –

6

: https://github.com/TypecastException/AspNet-Identity-2-With-Integer-Keys

आप अपनी पहचान नींव के लिए आधार के रूप में ले, तो आप कुछ इस तरह से खत्म हो जाएगा उपरोक्त पोस्ट वास्तव में सहायक था (धन्यवाद सेवा, अगर मेरी प्रतिष्ठा ने मुझे अनुमति दी तो वोट देंगे)। इससे मुझे कुछ समस्याएं हल करने में मदद मिली जो मैं कुछ छोटे बदलावों के साथ कर रहा था जो मैं प्राप्त करने की कोशिश कर रहा था। मेरी विशेष समस्या यह थी कि यदि मैं वर्तमान उपयोगकर्ता किसी दिए गए भूमिका समूह में था तो मैं एक एमवीसी व्यू में जांचना चाहता था। मैंने यह भी पाया कि भूमिकाएं। IUUserInRole अब काम नहीं कर रहा था।

bool isAdmin = HttpContext.Current.User.IsInRole("Admin"); 
:

आप एक दृश्य में यह कर रहे हैं, लेकिन इसके बजाय ASP.NET पहचान 2.0 का उपयोग कर सरल सदस्यता प्रदाता पिछले MVC संस्करणों द्वारा की पेशकश की है, तो निम्न एक 1-लाइन समाधान के रूप में उपयोगी हो सकता है

फिर आप HTML के साथ यह संयुक्त कर सकते हैं चुनिंदा मेनू आइटम दिखाने के लिए (जो है जो मैं के लिए उपयोग किया गया है) कुछ इस तरह से: मुझे

@if (isAdmin) 
{ 
    <li>@Html.ActionLink("Users", "List", "Account")</li> 
} 

यह अनुमति देता है उपयोगकर्ता प्रबंधन हाइपरलिंक के लिए उपयोग को रोकने के लिए जहां उपयोगकर्ता 'व्यवस्थापक' भूमिका का सदस्य नहीं है।

+0

नाइस (1 अप), इससे मुझे भी मदद मिली! –

संबंधित मुद्दे