2016-10-10 5 views
0

Может кто-нибудь, пожалуйста, помогите мне, как я могу использовать специальные символы в идентификаторе ASP.Net? Проблема заключается в том, что мои пользователи не могут зарегистрироваться специальными символами: č, ć, š, ž, đ. Когда вы пытаетесь ввести эти символы при регистрации, я получаю следующую ошибку: Имя пользователя Krešo недействительно, может содержать только буквы или цифры.ASP.NET Identity AllowOnlyAlphanumericUserNames

Где и как я могу это изменить.

Вот код:

using Microsoft.AspNet.Identity; 
using Microsoft.Owin.Security; 
using Microsoft.AspNet.Identity.EntityFramework; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class Pages_Account_Register : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void btnPrijava_Click(object sender, EventArgs e) 
    { 
     UserStore<IdentityUser> userStore = new UserStore<IdentityUser>(); 

     userStore.Context.Database.Connection.ConnectionString = 
      System.Configuration.ConfigurationManager.ConnectionStrings["SeminariConnectionString3"].ConnectionString; 

     UserManager<IdentityUser> manager = new UserManager<IdentityUser>(userStore); 

     IdentityUser user = new IdentityUser(); 

     user.UserName = txtKorisnickoIme.Text; 

     if(txtLozinka.Text == txtPotvrdaLozinke.Text) 
     { 

      try 
      { 
       IdentityResult result = manager.Create(user, txtLozinka.Text); 

       if(result.Succeeded) 
       { 
        var authenticationManager = HttpContext.Current.GetOwinContext().Authentication; 
        var userIdentity = manager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie); 

        authenticationManager.SignIn(new AuthenticationProperties(), userIdentity); 

        Response.Redirect("Pocetna.aspx"); 

       } 

       else 
       { 
        litStatus.Text = result.Errors.FirstOrDefault(); 

       } 
      } 
      catch (Exception ex) 
      { 

       litStatus.Text = ex.ToString(); 
      } 
     } 

     else 
     { 

      litStatus.Text = "Lozinke moraju biti identične."; 
     } 


    } 
} 
+0

Возможный дубликат [Специальные символы языка в имени пользователя ASP.NET Identity] (http://stackoverflow.com/questions/26909286/special-language-characters-in-username-of-asp-net-identity) – Andrei

+0

Я уже видел этот ответ, но я не знаю, как использовать этот класс в своем решении. –

ответ

1

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

var manager = new UserManager<IdentityUser>(userStore); // existing code 
var validator = manager.UserValidator as UserValidator<ApplicationUser>; 
if (validator != null) validator.AllowOnlyAlphanumericUserNames = false; 

Если validator оказаться пустым, затем отлаживать немного, чтобы найти фактическое тип, используемый во время выполнения.

+0

Мне не хватает ApplicationUser. Где я должен его создать? У меня нет класса identityconfig. –

+0

В моем случае он был автоматически сгенерирован из шаблона проекта VS2015 MVC. Он наследует от 'IdentityUser', который присутствует в вашем коде (возможно, из-за более старого шаблона MVC). Попробуйте использовать ** 'IdentityUser' ** вместо' ApplicationUser'. –

+0

Я использовал IdentityUser и validator: null –