C# 通过DbContext与UserManager进行访问
使用UserManager或DbContext是否有缺点或优点 如果我使用这个:C# 通过DbContext与UserManager进行访问,c#,asp.net-core,entity-framework-core,asp.net-core-identity,C#,Asp.net Core,Entity Framework Core,Asp.net Core Identity,使用UserManager或DbContext是否有缺点或优点 如果我使用这个: public class UserManager<TUser> : IDisposable where TUser : class public virtual Task<TUser> FindByIdAsync(string userId); 现在,您可以从数据库中查询用户。如果您决定将身份验证委托给授权服务器,该怎么办?我以前见过这种情况:人们决定创建一个Web API来处理身份验证
public class UserManager<TUser> : IDisposable where TUser : class
public virtual Task<TUser> FindByIdAsync(string userId);
现在,您可以从数据库中查询用户。如果您决定将身份验证委托给授权服务器,该怎么办?我以前见过这种情况:人们决定创建一个Web API来处理身份验证/授权细节。如果直接使用
DbContext
,则必须在使用它的任何地方进行更改
另一方面,通过使用UserManager
,您只需将UserManager
的实现更改为使用HttpClient
,以使用Web API来查询用户、角色和创建用户身份所需的其他内容
UserManager
通过IUserStore
和一些其他接口封装了实现细节。我会避免直接查询任何标识表,尽管这是一种尝试。如果直接使用实体框架,主要缺点是如果将存储更改为其他内容,则必须更改所有引用
ASP.NET Core Identity允许您通过两个步骤创建自定义存储:
public class MyStore : IUserStore<ApplicationUser>, ... // many more
{ }
公共类MyStore:IUserStore,…//更多
{ }
// default
services.AddIdentity(...).AddEntityFrameworkStores();
// yours
services.AddIdentity(...).AddUserStore<MyStore>();
//默认值
services.AddIdentity(…).AddEntityFrameworkStores();
//你的
services.AddIdentity(…).AddUserStore();
UserManager
方法
// default
services.AddIdentity(...).AddEntityFrameworkStores();
// yours
services.AddIdentity(...).AddUserStore<MyStore>();