美文网首页Asp.net core mvc
ASP.NET Core MVC手动添加标识(三)

ASP.NET Core MVC手动添加标识(三)

作者: firechun | 来源:发表于2019-01-09 14:29 被阅读0次

虽然用户注册的数据成功提交了,但是并没有创建用户,来看看问题出在哪。

看看Register的POST方法代码:

if (ModelState.IsValid)
{
       var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
       var result = await userManager.CreateAsync(user, model.Password);
       return RedirectToLocal(returnUrl); 
}
return View(model);

其中加粗的这行就是调用UserManager创建用户的异步方法,这个方法的返回值包含了创建是否成功,以及未成功时的错误信息。把代码修改一下,看看result给我们带来了什么。

var result = await userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
    return RedirectToLocal(returnUrl);
}
foreach (IdentityError error in result.Errors)
{
     ModelState.AddModelError(string.Empty, error.Description);
}

result的属性Succeeded表示用户创建是否成功,程序现在判断用户创建成功后才重定向到指定的网页,否则遍历result的Errors属性,这个属性中包含了所有验证错误,将这些错误添加到模型验证错误中并返回客户端。

重新运行程序,输入用户名和密码,密码仍然输入123,提交后页面上出现以下验证错误:

验证错误信息

这是标识框架默认的密码验证规则,包括:密码长度至少为6;密码至少有一个非字母数字的字符;密码至少有一个大写和小写字符。至于怎么用中文显示这些验证信息,后面再说。

这些验证规则可以通过配置标识选项来修改。同样在Startup类的ConfigureServices方法中添加以下代码:

services.Configure<IdentityOptions>(options =>
{
    options.Password.RequiredLength = 3;
    options.Password.RequireNonAlphanumeric = false;
    options.Password.RequireLowercase = false;
    options.Password.RequireUppercase = false;
});

这里我把密码最小长度改为3,不需要大小写字母,不需要特殊符号,嗯,现在可以输入123做为密码了。

好了,再次创建用户后,查看数据库,AspNetUsers表中已经插入了用户数据。

相关文章

网友评论

    本文标题:ASP.NET Core MVC手动添加标识(三)

    本文链接:https://www.haomeiwen.com/subject/kgavrqtx.html