Простой обмен для использования usr / pwd из другого бэкэнда в Aspnetcore2.2

Вам нужно добавить blank = True в вашу модель, так как это купон ForeignKey = models.ForeignKey('carts.Coupon',related_name='carts',on_delete=models.SET_NULL, null=True, blank=True )

. Хорошая сообщение о разнице нулей и пробелов на модели

0
задан LosManos 22 January 2019 в 21:41
поделиться

2 ответа

Функция signInManager.PasswordSignInAsync принимает имя пользователя и пароль и регистрирует вас. Она занимает еще два поля (bools), первое - «постоянное», которое вы можете отметить как ложное в вашем случае, а второе - блокировка. Это возвращает SignInResult, который затем можно использовать для проверки успешности входа в систему с помощью result.Succeeded.

var result = signInManager.PasswordSignInAsync(username, pass, true, true);
return result.Succeeded;
0
ответ дан Neville Nazerane 22 January 2019 в 21:41
поделиться

Я думаю, что IUserPasswordStore не несет ответственности за хэширование пароля, поэтому вам не нужно помещать туда свой хэш-алгоритм. Ответственность IUserPasswordStore заключается только в том, чтобы установить и получить хешированный пароль от пользователя Identity (MyIdentityUser).

Взгляните на реализацию GetPasswordHashAsync в UserStoreBase, просто верните user.PasswordHash, вот и все.

https://github.com/aspnet/AspNetCore/blob/bfec2c14be1e65f7dd361a43950d4c848ad0cd35/src/Identity/Extensions.Stores/src/UserStoreBase.cs [115] [IserS], если вы внедрили Iser SoS, если вы это используете не означает, что у вас должен быть свой собственный хэш-пароль.

Ответственный за хеширование пароля - IPasswordHasher. Если вы хотите иметь свой собственный хэш-пароль, вы можете реализовать его самостоятельно.

    public class MyPasswordHasher : IPasswordHasher<MyIdentityUser>
    {
        public string HashPassword(MyIdentityUser user, string password)
        {
            ...
        }

        public PasswordVerificationResult VerifyHashedPassword(MyIdentityUser user, string hashedPassword, string providedPassword)
        {
            ...
        }
    }

Для хэша пароля по умолчанию вы можете найти его здесь,

https://github.com/aspnet/AspNetCore/blob/bfec2c14be1e65f7dd361a43950d4c848ad0cd35/src/Identity/Extensions .Core / src / PasswordHasher.cs

И зарегистрируйте его для DI в файле startup.cs, чтобы UserManager использовал ваш собственный пользовательский хэш-пароль. Или, другими словами, это добавит ваш хэш-пароль в поток.

services.AddScoped<IPasswordHasher<MyIdentityUser>, MyPasswordHasher>();

А также взгляните на класс UserManager, здесь взаимодействуют IUserPasswordStore и IPasswordHasher. Внутри UserManager вы найдете следующий код

passwordStore.SetPasswordHashAsync(user, PasswordHasher.HashPassword(newPassword)).WithCurrentCulture();
0
ответ дан Laksmono 22 January 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: