5

मैं OpenIddict for token authentication का उपयोग कर रहा हूं। कल जब मैं userManager.FindByNameAsync(request.Username) पर कॉल करता हूं तो मुझे रोल के साथ उपयोगकर्ता मिलता है।
आज मैं भूमिकाओं संपत्ति गिनती के साथ उपयोगकर्ता = 0.userManager.FindByName भूमिकाओं को वापस नहीं करता

मैं await userManager.GetRolesAsync(user); साथ भूमिकाओं लोड करने का प्रयास हो और मैं इसका मतलब है कि उपयोगकर्ता भूमिकाओं है गिनती 3. के साथ सरणी मिलता है।

मुझे नहीं पता कि क्या बदल गया है, लेकिन मैं FindByNameAsync फ़ंक्शन के साथ भूमिकाओं के साथ उपयोगकर्ता को कैसे लोड कर सकता हूं?

पूरा कोड:

[HttpPost("token"), Produces("application/json")] 
public async Task<IActionResult> Exchange(OpenIdConnectRequest request) 
{ 
    Debug.Assert(request.IsTokenRequest(), 
     "The OpenIddict binder for ASP.NET Core MVC is not registered. " + 
     "Make sure services.AddOpenIddict().AddMvcBinders() is correctly called."); 

    if (request.IsPasswordGrantType()) 
    { 
     var user = await userManager.FindByNameAsync(request.Username); //roles count is 0 
     if (user == null) 
     { 
      return BadRequest(new OpenIdConnectResponse 
      { 
       Error = OpenIdConnectConstants.Errors.InvalidGrant, 
       ErrorDescription = "The email/password couple is invalid." 
      }); 
     } 
     var roles = await userManager.GetRolesAsync(user); //roles count is 3 

उत्तर

6

लेकिन मैं कैसे FindByNameAsync समारोह के साथ भूमिकाओं के साथ उपयोगकर्ता लोड कर सकते हैं?

आप कम से कम अपने IUserStore को लागू किए बिना नहीं कर सकते हैं)।

हुड के तहत, डिफ़ॉल्ट एएसपी.NET कोर पहचान स्टोर कार्यान्वयन (ईएफ पर आधारित) प्रदर्शन कारणों से उपयोगकर्ता इकाई से जुड़े नेविगेशन गुणों को उत्सुकता से लोड नहीं करता है, यही कारण है कि Roles संपत्ति पॉप्युलेट नहीं है।

किसी उपयोगकर्ता से जुड़ी भूमिकाओं को लोड करने के लिए, UserManager.GetRolesAsync(user); का उपयोग करें।

+0

मैं क्यों टाइप नहीं कर सकता हूं। दावा (दावा) इत्यादि। और वास्तव में इसे प्राप्त करें – Hristo

+0

मुझे नहीं लगता कि आपकी राय व्यक्त करने के लिए अपमान आवश्यक हैं। यदि आप 'Include' एक्सटेंशन का उपयोग करना चाहते हैं, तो आपको अपना स्वयं का स्टोर बनाना होगा (जिसे आधिकारिक ईएफ स्टोर से लिया जा सकता है) और उपयोगकर्ता उदाहरण लौटने वाले तरीकों को ओवरराइड करना होगा। – Pinpoint

+0

यह सिर्फ पूरी तरह से बनाया गया है। आप अपनी आधा संपत्तियों को किसी भी तरह से पुनर्प्राप्त करते हैं - आधे दूसरे। किसने सोचा कि यह विचार अच्छा है !? प्रदर्शन? जब आप अपने देव समुदाय के आधे से कैंसर देते हैं तो आपके पास प्रदर्शन नहीं होगा – Hristo

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