使用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(..)
2 回答
如果直接使用Entity Framework,主要的缺点是,如果将商店更改为其他内容,则必须更改所有引用 .
ASP.NET Core Identity允许您分两步创建自定义商店:
如果由于业务需求或Entity Framework Core中不可用的数据存储方法(甚至愿意从项目中删除EF Core)而需要创建自定义存储,那么如果使用
UserManager
方法,则会更好 .今天,您从数据库中查询用户 . 如果您决定将身份验证委派给授权服务器,该怎么办?我之前见过这种情况:人们决定创建一个Web API来处理身份验证/授权细节 . 如果您直接使用
DbContext
,则必须在使用它的任何地方进行更改 .另一方面,通过使用
UserManager
,您只需更改UserManager
的实现以使用HttpClient
,以使用Web API来查询创建用户身份所需的用户,角色和其他内容 .UserManager
通过IUserStore
和其他一些接口封装了实现细节 . 我非常试探性的 .