获取当前用户对象asp.net MVC 5



我对asp.net MVC5中的用户身份验证非常困惑……我一直在参考这篇文章:

http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates.aspx

这个问题:

MVC 5自定义用户商店ASP.net标识-UserManager<TUser>是否可以访问角色?

并且完全知道在哪里。这是我的IdentityModel.cs 中的代码

namespace attempt_4.Models
{
public class ApplicationUser : IdentityUser
{
     public string FirstName { get; set; }
}
public class MyUserStore : IUserStore<ApplicationUser>
{
}
public class ApplicationDbContext<ApplicationUser> : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }
}
}

在控制器中,我试图用获取UserObject

   var userManager = new UserManager<ApplicationUser>(new MyUserStore<ApplicationUser>(new ApplicationDbContext()));
  var user = userManager.FindById(User.Identity.GetUserId());

这给我带来了大量的编译错误,大多数是以attempt_4.Models.MyUserStore<ApplicationUser>' does not implement interface member 'System.IDisposable.Dispose()的形式出现的,但也有一个错误说ApplicationUser不能用作Type参数"TUser"。

目前我正在使用:

var id = User.Identity.GetUserId();
var user = db.Users.First(x => x.Id == id);

这不是最好的方式,毫无疑问,由于[Authorize],数据库已经被查询过了。

我不需要任何涉及角色或任何花哨的东西。。。只是想扩展User模型,并能够从其他模型中引用它来做这样的事情:db.Apartments.where(apt => apt.OwnerId == currentUserID)。也就是说,将表链接到User表的最佳做法是什么?我应该在ApplicationUser类中有一个int id来查询吗?或者我应该只使用Guid?

您收到一个错误,因为您没有实现您所声明的接口(IUserStore)。也没有必要制作自己的UserStore,你可以使用开箱即用的:

new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()))

如果这不能满足您的要求,这里有一个关于如何实现ASP.NET Identity的好指南:http://odetocode.com/blogs/scott/archive/2014/01/20/implementing-asp-net-identity.aspx

此外,我认为[Authorize]只是授权用户的cookie,而不是以任何方式查询数据库。

相关内容

  • 没有找到相关文章

最新更新