Использование кода идентификации MVC из настольного приложения - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь использовать идентификационный код MVC из настольного приложения.Настольное приложение должно внести кучу дополнений и обновлений в мои пользовательские данные.

Я скопировал классы из сгенерированного приложения MVC, установил необходимые пакеты и внес все изменения, необходимые для компиляции кода.

Единственная проблема, с которой я столкнулся сейчас, - это создание экземпляра класса ApplicationUserManager.

public ApplicationUserManager UserManager
{
    get => _userManager ?? HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
    private set
    {
        _userManager = value;
    }
}
private ApplicationUserManager _userManager;

Проблема в том, что у меня нет HttpContext, поэтому HttpContext.Current всегда будет возвращатьсяnull.

Возможно ли то, что я делаю?Как я могу создать UserManager из настольного приложения без HTTP-контекста?

ОБНОВЛЕНИЕ:

У меня есть прямой доступ к базе данных, поэтому я будудоволен решением, которое не требует кода и классов Identity.Самым большим препятствием здесь будет создание и обновление паролей, чтобы они могли быть «поняты» с помощью кода Identity в приложении на моем веб-сайте.

Ответы [ 2 ]

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

Вы можете сделать так:

var context = ApplicationDbContext.Create();
var userStore = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(userStore);
//change password
var result = userManager.ChangePasswordAsync("userId", "oldPwd", "newPwd");
0 голосов
/ 15 февраля 2019

интересный подход,

в противном случае необходимо будет очистить все, что затрагивает httpcontext ..

вы можете создать экземпляр ApplicationUserManager следующим образом.

public ApplicationUserManager UserManager
{
    get
    { 
        if(_userManager == null)
        {
            _userManager =  new ApplicationUserManager(new Microsoft.AspNet.Identity.EntityFramework.UserStore<ApplicationUser>(yourDbContext));
        }
        return _userManager;
    }
}
...