PasswordSignInAsync и CreateAsync без Entity Framework - PullRequest
0 голосов
/ 13 февраля 2019

SignInManager.PasswordSignInAsync проверяет пользователя на наличие в базе данных и выполняет вход. await UserManager.CreateAsync создает нового пользователя в базе данных.await SignInManager.SignInAsync подписывается на пользователя.

Поправьте меня, если я ошибаюсь, но это тривиально для этого вопроса.Как реализовать эти функции, когда мы не используем Entity Framework в ASP.NET MVC?

1 Ответ

0 голосов
/ 26 февраля 2019

Вам не нужно реализовывать этот метод, даже если вы не используете EF

. Вы можете рассчитывать на идентичность asp.net, зарегистрировав пользовательский класс в IUserStore и вызывая их, чтобы использовать собственный доступ к базе данных

Я следил за этой статьей, и членство работает даже с моим собственным письменным уровнем доступа к данным:

https://markjohnson.io/articles/asp-net-core-identity-without-entity-framework/

В основном вам необходимо:

  1. написать свой доступ к базе данных (конечно)
  2. создать модель для пользователя (и для роли и т. Д.)
  3. создать UserStore, который реализует IUserStore, обрабатывая методы YourCustomModel
  4. добавьте UserStore в качестве службы при запуске приложения

После этого вы можете обращаться к менеджерам идентификации в вашем контроллере благодаря внедрению зависимостей

    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) ...
...