2016-09-17 9 views
3

ASP.NET ID 3.0のコントローラでアプリケーションユーザーを取得するためのgoogleingですが、結果は5以下しか見つかりません。コントローラでApplicationUserを取得

ApplicationUserプロパティを取得しようとしていますが、ApplicationUserを取得できません。私はこの問題の唯一の人だから、簡単だと思います。

using System.Linq; 
using System.Threading.Tasks; 
using Microsoft.AspNet.Mvc; 
using Microsoft.AspNet.Mvc.Rendering; 
using Microsoft.Data.Entity; 
using System; 
using System.Collections.Generic; 
using System.Reflection; 
using Microsoft.AspNet.Identity; 
using System.Security.Claims; 

namespace ApplicationUserFMLTest.Controllers 
{ 
    public class CustomClassController : Controller 
    { 
     private readonly UserManager<ApplicationUser> _userManager; 
     private readonly SignInManager<ApplicationUser> _signInManager; 

     private ApplicationDbContext _context; 

     public CandidatesController(ApplicationDbContext context, UserManager<ApplicationUser> userManager, SignInManager<ApplicationUser> signInManager) 
     { 
      _context = context; 
      _userManager = userManager; 
      _signInManager = signInManager; 
     } 

     // GET: CustomClass 
     public async Task<IActionResult> Index() 
     { 
      ApplicationUser currentUser = _userManager.FindByIdAsync(User.Identity.GetUserId()).Result; 


      if (currentUser.PropBool) 
       return View(currentUser); 


      return View(); 
     } 

     // ManageController function 
     private async Task<ApplicationUser> GetCurrentUserAsync() 
     { 
      return await _userManager.FindByIdAsync(HttpContext.User.GetUserId()); 
     } 

    } 
} 
+0

あなたのコードに問題がありますか?間違いましたか? –

+0

Identityには 'GetUserId'と最善の拡張メソッドの定義が含まれていませんovreload 'PrincipalExtensions.GetUserId(ClaimsPrincipal)'には 'ClaimsPrincipal'タイプの受信者が必要です – StuiterSlurf

答えて

5

ジョーの答えは正常に動作しますが、直接ClaimsPrincipalインスタンスを受け取り、GetUserIdを呼び出す簡単な方法は、またあります注意します内部:

var user = await _userManager.GetUserAsync(User); 
2

あなたは、このようにコードを変更する必要があります。

public async Task<IActionResult> Index() 
{ 
    var userId = _userManager.GetUserId(User); 
    ApplicationUser currentUser = await _userManager.FindByIdAsync(userId); 


    if (currentUser.PropBool) 
     return View(currentUser); 


    return View(); 
} 

the way to get the userid changed back in RC2

関連する問題