Доступ к параметрам пароля идентификации после настройки служб - PullRequest
0 голосов
/ 11 декабря 2018

В методе запуска ConfigureServices во время настройки службы Identity правила паролей можно настроить с помощью кода следующим образом:

services.Configure<IdentityOptions>(options =>
{
    options.Password.RequireDigit = false;
    options.Password.RequireLowercase = false;
    options.Password.RequireNonAlphanumeric = false;
    options.Password.RequireUppercase = false;
    options.Password.RequiredLength = 6;
    options.Password.RequiredUniqueChars = 2;
});

Где options.Password - это объект Identity с именем PasswordOptions, Пожалуйста, обратите внимание, что моя безопасность настолько слабая, что я делаю работу над Register более плавной, без необходимости повторять сложные пароли.

Теперь на моей странице регистрации я хотел быиметь метод GeneratePassword, который принимает в качестве входных данных экземпляр PasswordOptions и генерирует пароль, соответствующий этим параметрам.Мне бы хотелось, чтобы этот объект имел те же значения, что и при настройке параметров пароля в ConfigureServices.

Есть ли способ получить доступ к этим значениям параметра?Пока единственное решение, которое у меня есть, - это сохранить параметры пароля в моем appsettings.json в виде сериализованного PasswordOptions и использовать шаблон Options для добавления PasswordOptions в PageModel моей Register страницы.Однако я, возможно, не захочу хранить параметры в файле конфигурации и хотел бы получить к ним доступ позже, так как они жестко заданы в ConfigureServices.

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете просто запросить экземпляр IOptions<IdentityOptions> у DI в вашем методе и затем получить к нему доступ, используя что-то вроде следующего:

public class RegisterModel : PageModel
{
    private readonly IdentityOptions identityOptions;

    public RegisterModel(IOptions<IdentityOptions> identityOptions)
    {
        this.identityOptions = identityOptions.Value;
    }

    public void OnGet()
    {
        identityOptions.Password.RequireDigit; // etc
    }
}
...