zoukankan      html  css  js  c++  java
  • Asp.Net MVC Identity 2.2.1 使用技巧(三)

    使用用户管理器之用户注册

    用户管理的基本功能模块中已经做好了,我们现在做一些调整。

    1、修改用户名注册规则。

    上一篇中可选操作已经详解了这里把基本的设置简介下。

    打开App_Start/identityConfig.cs ,在public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) (43行)方法内找manager.UserValidator = new UserValidator<ApplicationUser>(manager)(47行)修改代码如下:

    1 // 配置用户名的验证规则
    2             manager.UserValidator = new UserValidator<ApplicationUser>(manager)
    3             {
    4                 AllowOnlyAlphanumericUserNames = true,  //是否UserName只能包含字母数字
    5                 RequireUniqueEmail = true   //是否Email地址必须唯一
    6             };

    我这里是考虑了手机用户输入的方便性,所以不使用Email为用户名。我想用qq号做用户名,所以AllowOnlyAlphanumericUserNames选true。

    2、修改密码强度。

    打开App_Start/identityConfig.cs ,在public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) (43行)方法内找manager.PasswordValidator = new PasswordValidator(54行)修改如下代码:

    1  // 设置密码规则
    2             manager.PasswordValidator = new PasswordValidator
    3             {
    4                 RequiredLength = 6, //设置密码长度最小为6.
    5                 RequireNonLetterOrDigit =false, //是否包含一个非字母或数字字符.
    6                 RequireDigit = false,  //是否需要一个数字(0-9).
    7                 RequireLowercase = false,//是否需要一个小写字母(a-z).
    8                 RequireUppercase = false,//是否需要一个大写字母(A-Z).
    9             };

    3、打开Controllers目录下的AccountController.cs。

    在控制器中找到public async Task<ActionResult> Register(RegisterViewModel model)(150行)方法中的var user = new ApplicationUser { UserName = model.Email, Email = model.Email };(154行)这里两个参数都是绑定的Email。

    改为var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };更改后vs会提示下红波浪线(错误),选择纠错为“生成属性”的哪一项。注意:自动生成会是public string UserName { get; internal set; } 必须把internal set改为set,否则后期无法获取到值。

    4、修改用户注册的数据模型:修改Models文件夹下AccountViewModels目录下RegisterViewModel.cs模型内的public class RegisterViewModel 中添加   public string UserName { get; set; },好了在上面堆你想要的规则吧。

    1 [Required]
    2         [StringLength(20, ErrorMessage = "{0} 必须至少包含 {2} 个字符,最多20个字符。", MinimumLength = 6)]
    3         [Display(Name = "用户账号")]
    4         [DataType(DataType.Text)]
    5         [RegularExpression("^[a-zA-Z0-9_]{6,20}$", ErrorMessage = "用户名由字母或数字组成。")]
    6         public string UserName { get; set; }

    5、在Views文件夹的Account中的register.cshtml文件中(14行)添加“用户账号”代码:

    1 <div class="form-group">
    2         @Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
    3         <div class="col-md-10">
    4             @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
    5         </div>
    6     </div>

    6、修改login,因为改为了用户名注册,如果还用email登陆的话,一定出现错误。

    首先在Models文件夹下找AccountViewModels.cs,在模型内找到LoginViewModel类(49行)添加 public string UesrName { get; set; },规则可以复制上面的吧。另外就是要把email模型项去掉或者注释掉,否则你登陆不上去且还不给提示。

    7、在Views/Account文件夹中的login.cshtml文件中原来为“email”的地方改为“UserName”。

    8、打开Controllers目录下的AccountController.cs,找到 public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 方法(69行),修改其中的var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); (78行)修改为var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false); 也就是把提示错误的Email换为UserName。

  • 相关阅读:
    codevs 2632 非常好友
    codevs 1213 解的个数
    codevs 2751 军训分批
    codevs 1519 过路费
    codevs 1503 愚蠢的宠物
    codevs 2639 约会计划
    codevs 3369 膜拜
    codevs 3135 River Hopscotch
    数论模板
    JXOJ 9.7 NOIP 放松模拟赛 总结
  • 原文地址:https://www.cnblogs.com/chonghanyu/p/6381289.html
Copyright © 2011-2022 走看看