2016-07-26 16 views
0

ユーザーにハイフン([email protected])を含む電子メールを登録すると、ユーザーは割り当てられている正しい役割のデータベースに正しくログオンします。しかし、そのユーザーがアプリケーションにログインすると、彼の役割が見ることができるはずの機能がすべて表示されることはありません。いくつかのボタンまたはタブ。私はエラーを受け取りません:登録電子メールのASP.NETハイフン

User name [email protected] is invalid, can only contain letters or digits.

登録時。

私は偽

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) 
    { 
     AllowOnlyAlphanumericUserNames = false, 
     RequireUniqueEmail = true 
    }; 
} 

AllowOnlyAlphanumericUserNamesセットを持っており、これはドットの代わりにハイフン([email protected])を含む電子メールのために働く、そのユーザーが自分の役割のユーザーがすべきすべてのものを見ることができます見ることができる。

EDIT

それでも問題が解決しないthis questionあたりとしてAccountControllerに提案されたコードを追加した後。

+2

[ASP.NET MVCのダッシュ付きアイデンティティ電子メール]の可能な複製(http://stackoverflow.com/questions/26726750/identity-email-with-dash-in-asp-net-mvc) – Liam

答えて

0

私の問題を解決した原因は、ユーザーに電子メールとパスワードの代わりにユーザー名とパスワードでログインさせることでした。

Login.cshtml

@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" }) 
<div class="col-md-10"> 
    @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" }) 
    @Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" }) 
</div> 

そしてAccountControllerログインPOSTメソッドでは、model.UserNameとして最初のパラメータを設定します。

var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false); 

さらに私は、単純な正規表現を追加したことは禁止属性チェックユーザ名にハイフンを使用すると、ハイフネーションされたユーザ名を持つと同じ問題が発生します。

AccountViewModels.cs

[RegularExpression("[^-]+", ErrorMessage = "Username can not contain a hyphen (-)")] 

は今、電子メールはまだそれでハイフンを持つことができ、すべての役割に関連する機能は、ログインしているユーザーに表示されます。

関連する問題