SignInManager.PasswordSignInAsync
检查用户是否存在于数据库中并登录。await UserManager.CreateAsync
在数据库中创建新用户。 await SignInManager.SignInAsync
登录用户。
如果我错了,请纠正我,但是对于这个问题来说,这很简单。当我们不在ASP.NET MVC中使用实体框架时,如何实现这些功能?
答案 0 :(得分:0)
即使您没有使用EF,也无需实现那些方法
您可以通过在IUserStore中注册自定义类并调用它们以使用您自己的数据库访问权限来依赖asp.net身份
我已经关注了这篇文章,并且该成员资格甚至适用于我自己的书面数据访问层:
https://markjohnson.io/articles/asp-net-core-identity-without-entity-framework/
基本上,您必须:
由于依赖注入,您随后可以在Controller中引用身份管理器
private readonly UserManager<YourCustomModel> _userManager;
private readonly SignInManager<YourCustomModel> _signInManager;
public YourCustomController(
UserManager<YourCustomModel> userManager,
SignInManager<YourCustomModel> signInManager
)
{
_userManager = userManager;
_signInManager = signInManager;
}
,并在您的操作中使用它们来调用身份方法:
var uModel = YourCustomModel.Static.SelectByEmail(vModel.Email);
var result = await _signInManager.PasswordSignInAsync(uModel, vModel.Password,
vModel.RememberMe, lockoutOnFailure: false);
if (result.Succeeded) ...
答案 1 :(得分:0)
SignInAsync方法,然后在内存中创建一个用户对象。
var userPrincipal = await _signInManager.CreateUserPrincipalAsync(new
ApplicationUser
{
Id = 1,
UserName = viewModel.UserName,
Email = viewModel.UserName,
SecurityStamp = Guid.NewGuid().ToString()
});
foreach(var claim in userPrincipal.Claims)
{
appUser.Claims.Add(new ApplicationUserClaim { UserId = appUser.Id,
ClaimType = claim.Type, ClaimValue = claim.Value });
}
await _signInManager.SignInAsync(appUser, viewModel.RememberMe);