• 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。

  • 相关阅读:
    线程练习-网络买票
    永久储存信息(已完善)
    Linux命令
    oracle(3)
    小结
    java开发中中文编码问题
    double保留两位小数
    oracle(2)
    javadate相关
    分布式
  • 原文地址:https://www.cnblogs.com/chonghanyu/p/6381289.html
Copyright © 2020-2023  润新知