我在我的项目中有一个文章实体,它具有名为Author的ApplicationUser属性。如何获取当前登录的ApplicationUser的完整对象?在创建新文章时,我必须将article中的Author属性设置为当前的ApplicationUser。
在旧的会员机制中,这很简单,但在新的身份方法中,我不知道如何做到这一点。
我试着这样做:
为身份扩展添加using语句:
然后我尝试获取当前用户:ApplicationUser currentUser = db.Users。FirstOrDefault(x => x.Id == User.Identity.GetUserId());
但我得到了以下异常:
LINQ to Entities不识别方法System。字符串GetUserId(System.Security.Principal.IIdentity)方法,该方法不能转换为存储表达式。
源= EntityFramework
对于MVC 5,只需在WebApplication模板脚手架中查看ManageController的EnableTwoFactorAuthentication方法,它是在那里完成的:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> EnableTwoFactorAuthentication()
{
await UserManager.SetTwoFactorEnabledAsync(User.Identity.GetUserId(), true);
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
if (user != null)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
}
return RedirectToAction("Index", "Manage");
}
答案就在那里,正如微软自己所建议的:
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
它将拥有您在ApplicationUser类中定义的所有附加属性。