SignInManager.PasswordSignInAsync проверяет наличие пользователя в базе данных и входит в систему. await UserManager.CreateAsync создает нового пользователя в базе данных. await SignInManager.SignInAsync подписывает пользователя.
Поправьте меня, если я ошибаюсь, но это тривиально для этого вопроса. Как реализовать эти функции, если мы не используем Entity Framework в ASP.NET MVC?
@PranavSingh прав: вопрос в том, что вы хотите авторизовать?
@PranavSingh Я использую не пользовательскую аутентификацию, а идентификацию asp.net, которая по умолчанию используется в примере приложения.





Вам не нужно реализовывать этот метод, даже если вы не используете EF
Вы можете полагаться на удостоверение asp.net, зарегистрировав пользовательский класс в IUserStore и вызывая их для использования собственного доступа к базе данных.
Я следил за этой статьей, и членство работает даже с моим собственным письменным уровнем доступа к данным:
https://markjohnson.io/articles/asp-net-core-identity-without-entity-framework/
В основном вы должны:
Затем вы можете обратиться к диспетчерам удостоверений в своем контроллере благодаря внедрению зависимостей.
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) ...
Вместо этого используйте метод 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);
Планируете ли вы использовать схему членства в удостоверении aspnet или пользовательскую проверку подлинности и авторизацию? Зависит от этого. Те методы из коробки поверх схемы, иначе нужно иметь информацию как авторизоваться