zoukankan      html  css  js  c++  java
  • <一>初试Identity

    搞理论之前先把identity配置起来。

    1、新建一个mvc项目
    2、引入Identity.EntityFrameworkCore,EntityFrameworkCore,EntityFrameworkCore.sqlserver,EntityFrameworkCore.Tools
    3、配置数据库连接
    4、配置数据库上下文

    1、配置数据库连接

     "ConnectionStrings": {
        "conn": "Data Source=127.0.0.1;User ID=sa;Password=62;database=IdentityTest;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
      }

    2、注入管道

      services.AddDbContext<ApplicationDbContext>(options =>
                {
                    //配置文件前面必须是;ConnectionStrings
                    //因为默认是:GetSection("ConnectionStrings")[name].
                     options.UseSqlServer(Configuration.GetConnectionString("conn"));
                    //options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
                });
    
                services.AddIdentity<ApplicationUser, ApplicationRole>()
                    .AddEntityFrameworkStores<ApplicationDbContext>()
                    .AddDefaultTokenProviders();

    3、配置数据库上下文

    namespace IdentityTest.Data
    {
        public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
        {
            public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
            {
    
            }
        }
    }

    4、新增相关模型类

     public class ApplicationRole: IdentityRole
        {
        }
      public class ApplicationUser: IdentityUser
        {
        }
     public class RegisterViewModel
        {
            public string UserName { get; set; }
    
            public string PassWord { get; set; }
        }

    5、新增Login的Controller

     public class LoginController : Controller
        {
            private readonly UserManager<ApplicationUser> _userManager;
            private readonly SignInManager<ApplicationUser> _signinManager;
            public LoginController(UserManager<ApplicationUser> userManager, SignInManager<ApplicationUser> signinManager)
            {
                _userManager = userManager;
                _signinManager = signinManager;
            }
            public IActionResult Index()
            {
                return View();
            }
    
            [HttpPost]
            public async Task<IActionResult> Register(RegisterViewModel model)
            {
                var identityUser = new ApplicationUser
                {
                    UserName = model.UserName,
                    PasswordHash = model.PassWord,
                    NormalizedEmail = model.UserName
                };
    
                var identityResult = await _userManager.CreateAsync(identityUser, model.PassWord);
                if (identityResult.Succeeded)
                {
                    return RedirectToAction("Index", "Home");
                }
                return View();
            }
    
        }

    6、新增Index.cshtml的注册页面

    <div>
    
        <form asp-controller="Login" asp-action="Register" method="post">
    
            <div>
    
                <label class="control-label">用户名</label>
    
                <input class="form-control" type="text" name="UserName" />
    
            </div>
    
            <div>
    
                <label class="control-label">密码</label>
    
                <input class="form-control" type="password" name="PassWord" />
    
            </div>
    
            <div class="form-group">
    
                <input type="submit" value="登录" class="btn btn-primary" />
    
            </div>
        </form>
    
    </div>

    7、数据库迁移,控制台执行如下命令

    1、 Add-Migration
    2、 Update-Database 

    8、执行完后数据库会生成如下表

     9、运行注册页面点击注册成功后,数据库注册表会生成一条test的账户,就此,identity的配置就成功了

  • 相关阅读:
    嘀嘀咕 (1)
    碎碎念(4)
    渲染层错误] TypeError: Cannot read property 'replace' of undefined at rewrit
    怎么跳出foreach
    vs code的Go Live不出现
    ES6
    h5分享到微信,分享到朋友圈
    网页之间传值与获取值
    原生js添加节点的高级简便写法
    原型链
  • 原文地址:https://www.cnblogs.com/choii/p/13915876.html
Copyright © 2011-2022 走看看