Используя 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;
}
}
Я уверен, что мне не хватает просто, я просто не вижу этого.