C # ASP.Net Web Form Identity UserManager изменения не соблюдаются - PullRequest
0 голосов
/ 05 октября 2018

Используя VS 2015, я построил веб-приложение и поместил его в модель ASP Identity.Это был мой первый раз с этим кодом, поэтому по понятным причинам я не очень разбираюсь в нем.

Я работаю над C # ASP.Net Web Forms.

У меня проблемы с изменениемUserManager для токенов и проверки.Я видел несколько примеров использования IdentityConfig.cs, но в конечном итоге весь мой код был в IdentityModels.cs.Мне удалось обновить IdentityModel для целочисленного идентификатора пользователя и других вещей, но теперь изменение usermanager, похоже, мне не подходит.

Вот соответствующий код в IdentityModels.cs:

public class UserManager : UserManager<ApplicationUser, int>
{
    public UserManager(): base(new UserStore<ApplicationUser, CustomRole, int, CustomUserLogin, CustomUserRole, CustomUserClaim>(new ApplicationDbContext()))
    {
    }
    public static UserManager<ApplicationUser, int> Create(IdentityFactoryOptions<UserManager> options, IOwinContext context)
    {

        var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("ApplicationName");

        var userManager = new UserManager<ApplicationUser, int>(new CustomUserStore(context.Get<ApplicationDbContext>()));

        userManager.UserValidator = new UserValidator<ApplicationUser, int>(userManager)
        {
            AllowOnlyAlphanumericUserNames = false
        };

        userManager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser, int>(provider.Create("ApplicationToken"));

        return userManager;
    }
}

Это, кажется, не регистрируется вообще.Мне никогда не удавалось заставить часть Token работать, и UserValidator, который я закончил, просто жестко запрограммировал ее на странице создания пользователя.

Это прекрасно работает, как я ожидаю:

                    var manager = new UserManager();
                    var user = new ApplicationUser()
                    {
                        UserName = nuUserName.Text,
                        Email = nuUserName.Text,
                        PhoneNumber = nuPhoneNumber.Text,
                        FirstName = nuFirstName.Text,
                        LastName = nuLastName.Text
                    };

                    manager.UserValidator = new UserValidator<ApplicationUser, int>(manager)
                    {
                        AllowOnlyAlphanumericUserNames = false
                    };


                    IdentityResult result = manager.Create(user, nuPassword.Text);

Я также на самом деле пытался добавить это в файл IdentityConfig.cs, но, тем не менее, этот код, похоже, просто не подбирается.Вот что у меня сейчас в этом файле:

 public class ApplicationUserManager : UserManager<ApplicationUser, int>
{
    public ApplicationUserManager(IUserStore<ApplicationUser, int> store) : base(store) { }
    public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
    {
        var manager = new ApplicationUserManager(new CustomUserStore(context.Get<ApplicationDbContext>()));

        manager.UserValidator = new UserValidator<ApplicationUser, int>(manager)
        {
            AllowOnlyAlphanumericUserNames = false
        };

        var dataProtectionProvider = options.DataProtectionProvider;
        if (dataProtectionProvider != null)
        {
            manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser, int>(dataProtectionProvider.Create("ApplicationToken"));
        }
        return manager;
    }
}

Я уверен, что мне не хватает просто, я просто не вижу этого.

...