使用UserManager或DbContext有什么缺点或优点吗?
如果我使用这个:
public class UserManager<TUser> : IDisposable where TUser : class
public virtual Task<TUser> FindByIdAsync(string userId);或者如果我使用像这样的直接dbcontext:
var user = dbContext.Users.Where(x => x.Id == model.Id).FirstOrDefault();
// Login like this
await HttpContext.SignInAsync(..)发布于 2018-04-20 19:31:12
现在,您可以从数据库中查询用户。如果您决定将身份验证委派给授权服务器,该怎么办?我以前见过这种情况:人们决定创建一个Web API来处理身份验证/授权细节。如果您直接使用DbContext,则必须在使用它的任何地方进行更改。
另一方面,通过使用UserManager,您只需将UserManager的实现更改为使用HttpClient,以使用Web API来查询用户、角色和创建用户身份所需的其他内容。
UserManager通过IUserStore和其他一些接口封装了实现细节。我会避免直接查询任何身份表,即使它是非常试探性的。
发布于 2018-04-20 19:31:55
直接使用Entity Framework的主要缺点是,如果将存储更改为其他存储,则必须更改所有引用。
ASP.NET核心标识允许您通过两个步骤创建自定义存储:
公共类MyStore : IUserStore,... //更多{}
//默认services.AddIdentity(...).AddEntityFrameworkStores();//您的services.AddIdentity(...).AddUserStore();
如果您曾经因为业务需求或实体框架核心中不可用的数据存储方法而需要创建自定义存储(或者甚至希望从项目中删除EF核心),那么如果您使用UserManager方法会更好。
https://stackoverflow.com/questions/49940567
复制相似问题