以前に MVC5 を使用してこれを行っUser.Identity.GetUserId()
たことがありますが、ここでは機能しないようです。にはメソッドUser.Identity
がありませんGetUserId()
。
を使用してMicrosoft.AspNet.Identity
います。
以前に MVC5 を使用してこれを行っUser.Identity.GetUserId()
たことがありますが、ここでは機能しないようです。にはメソッドUser.Identity
がありませんGetUserId()
。
を使用してMicrosoft.AspNet.Identity
います。
コントローラーで取得できます:
using System.Security.Claims;
var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier);
または.Core v1.0以前のような拡張メソッドを書く
using System;
using System.Security.Claims;
namespace Shared.Web.MvcExtensions
{
public static class ClaimsPrincipalExtensions
{
public static string GetUserId(this ClaimsPrincipal principal)
{
if (principal == null)
throw new ArgumentNullException(nameof(principal));
return principal.FindFirst(ClaimTypes.NameIdentifier)?.Value;
}
}
}
そして、ユーザー ClaimsPrincipal が利用可能な場所ならどこでも取得します:
using Microsoft.AspNetCore.Mvc;
using Shared.Web.MvcExtensions;
namespace Web.Site.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return Content(this.User.GetUserId());
}
}
}
System.Security.Claims の使用を含め、GetUserId() 拡張メソッドにアクセスできました
注意: Microsoft.AspNet.Identity を既に使用していましたが、拡張メソッドを取得できませんでした。したがって、両方を組み合わせて使用する必要があると思います
using Microsoft.AspNet.Identity;
using System.Security.Claims;
編集:この回答は古くなっています。CORE 1.0でこれを達成するための時代遅れの方法については、Soren'sまたはAdrien's answerを見てください。
この投稿のどこかで述べたように、GetUserId() メソッドは UserManager に移動されました。
private readonly UserManager<ApplicationUser> _userManager;
public YourController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
public IActionResult MyAction()
{
var userId = _userManager.GetUserId(HttpContext.User);
var model = GetSomeModelByUserId(userId);
return View(model);
}
空のプロジェクトを開始した場合は、startup.cs のサービスに UserManger を追加する必要がある場合があります。そうでなければ、これはすでに当てはまるはずです。
Razor ビューで現在のユーザー ID を取得するには、次のようにビューに UserManager を挿入できます。
@inject Microsoft.AspNetCore.Identity.UserManager<ApplicationUser> _userManager
@{ string userId = _userManager.GetUserId(User); }
お役に立てば幸いです。
ASP.NET MVC コントローラーでこれが必要な場合は、使用します
using Microsoft.AspNet.Identity;
User.Identity.GetUserId();
ステートメントがないと存在しないusing
ため、ステートメントを追加する必要があります。GetUserId()