與舊的Membership 機制不同,ASP.NET Identity 提供了一個用於存取目前使用者物件的API。取得方法如下:
在控制器或您有權存取預設使用者管理員的其他區域中,您可以使用 FindById方法:
using Microsoft.AspNet.Identity; public ActionResult Create() { var user = UserManager.FindById(User.Identity.GetUserId()); return View(); }
如果您是外部控制器,則可以使用以下程式碼:
using Microsoft.AspNet.Identity; using System.Web; public class MyCustomService { private HttpContext _httpContext; public MyCustomService(HttpContext httpContext) { _httpContext = httpContext; } public ApplicationUser GetCurrentUser() { var userId = _httpContext.User.Identity.GetUserId(); var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); return userManager.FindById(userId); } }
從存取目前使用者時可能需要此方法OWIN 上下文,例如來自 SignalR Hub 或標準機制不可用的其他場景:
using Microsoft.AspNet.Identity; using System.Web; public class MySignalRHub : Hub { public ApplicationUser GetCurrentUser() { var user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); return user; } }
以上是如何在 ASP.NET MVC 5 Identity 中檢索目前 ApplicationUser?的詳細內容。更多資訊請關注PHP中文網其他相關文章!