Tidak seperti mekanisme Keahlian lama, ASP.NET Identity menyediakan API untuk mengakses objek pengguna semasa. Begini cara anda boleh mendapatkannya:
Dalam pengawal atau kawasan lain di mana anda mempunyai akses kepada pengurus pengguna lalai, anda boleh menggunakan kaedah FindById :
using Microsoft.AspNet.Identity; public ActionResult Create() { var user = UserManager.FindById(User.Identity.GetUserId()); return View(); }
Jika anda berada di luar pengawal, anda boleh menggunakan kod berikut:
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); } }
Kaedah ini mungkin diperlukan apabila mengakses pengguna semasa daripada Konteks OWIN, seperti dari SignalR Hubs atau dalam senario lain di mana mekanisme standard tidak tersedia:
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; } }
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan semula ApplicationUser semasa dalam ASP.NET MVC 5 Identity?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!