我想使用 Dapper 创建我自己的Microsoft.AspNet.Identity存储数据实现(这意味着,我删除了EntityFramework默认实现)。
我创建MyUserStore
,实施IUserStore
并将其传递到UserManager
,如下所示:
private UserManager<User> _userManager { get; set; }
public AccountController() : this(new UserManager<User>(new MyUserStore())) {}
public AccountController(UserManager<User> userManager) {
_userManager = userManager;
}
一切都很好,直到我不想添加角色(我在MyUserStore
接口IUserRoleStore
中实现)。
当我看到UserManager
签名时,我有点困惑,因为我不知道这些方法是如何工作的:
[AsyncStateMachine(X)]
[DebuggerStepThrough]
public virtual Task<IList<string>> GetRolesAsync(string userId);
[AsyncStateMachine(X)]
[DebuggerStepThrough]
public virtual Task<bool> IsInRoleAsync(string userId, string role);
我可以打电话给他们,并且可以看到我如何进入MyUserStore
,但绝对是其他方法:
public Task<IList<string>> GetRolesAsync(User user)
public Task<bool> IsInRoleAsync(User user, string role)
所以,我被卡住了一点,因为我无法理解,我应该怎样处理UserManager
,顺便说一下RoleManager
。
我应该实现自己的UserManager
还是我必须只使用默认实现,为什么?
Sry如果问题很蹩脚,但有很多关于UserStore
的信息,但没有关于UserManager, RoleManager
e.t.c的信息。
答案 0 :(得分:1)
在选择实施自己的UserStore时,您可以实现角色,但是要存储角色。
这些方法仅在您实施IRoleStore
时才有效