Bir hesabı Web API üzerinden "[email protected]" gibi bir e-posta ile kaydederken, Fiddler aşağıdaki hatayı döndürür. E-postanın kullanıcı adı için de kullanıldığını unutmayın, bu nedenle her iki alan da ile aynıdır. Ama MVC'nin kendisinde kayıt yaparken çalışır.ASP.NET MVC Kimlik E-postası/Kullanıcı Adı Özel Karakterlerle
ExceptionMessage = Kullanıcı Oluşturma Başarısız - Kimlik İstisnası. Hatalar:
Kullanıcı adı [email protected] geçersiz, sadece harf veya rakam içerebilir.
Kullanıcı Nesnesi
var newUser = new ApplicationUser {
UserName = user.Email,
Email = user.Email
};
IdentifyConfig.cs
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) {
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
// Configure validation logic for usernames
manager.UserValidator = new UserValidator<ApplicationUser>(manager) {
RequireUniqueEmail = true,
AllowOnlyAlphanumericUserNames = false
};
Ben AllowOnlyAlphanumericUserNames dışında yorum çalıştı ama işe yaramadı. Doğru olarak yanlış ayarlanarak özel karakterlere izin verilmeli, benim durumumda tire (-).
API Kontrolör
// POST: api/auth/register
[ActionName("Register")]
public async Task<HttpResponseMessage> PostRegister(Auth user) {
//dash issue is here.
var userContext = new ApplicationDbContext();
var userStore = new UserStore<ApplicationUser>(userContext);
var userManager = new UserManager<ApplicationUser>(userStore);
var newUser = new ApplicationUser {
UserName = user.Email,
Email = user.Email
};
var result = await userManager.CreateAsync(newUser, user.PasswordHash);
if (result.Succeeded) {
...
Çözüm
IdentityConfig.cs NO değişiklikler vardır. Yalnızca benim API denetleyicim değişiklikler.
// POST: api/auth/register
[ActionName("Register")]
public async Task<HttpResponseMessage> PostRegister(Auth user) {
//Changed to the following line
ApplicationUserManager userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
var newUser = new ApplicationUser {
UserName = user.Email,
Email = user.Email
};
var result = await userManager.CreateAsync(newUser, user.PasswordHash);
Çözümünüz için teşekkürler! Notunda ne önerdiğini takip ettim. Sorumu çalışma çözümünü yansıtmak için düzenledim. :) –