• ASP.NET Identity


     一、ASP.NET Identity入门

    二、功能和API

    三、可扩展性

    四、迁移

    一、ASP.NET Identity入门

    1,开始使用ASP.NET Identity

    ①用个人帐户创建一个ASP.NET MVC应用程序。 您可以在ASP.NET MVC,Web窗体,Web API,SignalR等中使用ASP.NET Identity。在本文中,我们将从ASP.NET MVC应用程序开始。

    ②创建的项目包含以下三个包

     Microsoft.AspNet.Identity.EntityFramework 将ASP.NET Identity数据结构持久化到SQL Server中

     Microsoft.AspNet.Identity.Core 这个包有ASP.NET身份的核心接口。这个包可以用来编写针对不同持久化存储的ASP.NET Identity实现,比如Azure表存储,NoSQL数据库等等。

     Microsoft.AspNet.Identity.Owin  此包中包含用于在ASP.NET应用程序中使用ASP.NET Identity插入OWIN身份验证的功能。当您将登录功能添加到您的应用程序并调用OWIN Cookie身份验证中间件来生成cookie时,会使用此功能。

    ③创建一个用户。
    启动应用程序,然后点击注册链接来创建一个用户。

    当用户点击注册按钮时,Account控制器的Register操作通过调用ASP.NET Identity API来创建用户,如下所示:

    ④登录

    如果用户成功创建,则通过SignInAsync方法登录

            //
            // POST: /Account/Register
            [HttpPost]
            [AllowAnonymous]
            [ValidateAntiForgeryToken]
            public async Task<ActionResult> Register(RegisterViewModel model)
            {
                if (ModelState.IsValid)
                {
                    var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
                    var result = await UserManager.CreateAsync(user, model.Password);
                    if (result.Succeeded)
                    {
                        //如果用户成功创建,则通过SignInAsync方法登录。
                        await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
                        
                        // 有关如何启用帐户确认和密码重置的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkID=320771
                        // 发送包含此链接的电子邮件
                        // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        // await UserManager.SendEmailAsync(user.Id, "确认你的帐户", "请通过单击 <a href="" + callbackUrl + "">這裏</a>来确认你的帐户");
    
                        return RedirectToAction("Index", "Home");
                    }
                    AddErrors(result);
                }
    
                // 如果我们进行到这一步时某个地方出错,则重新显示表单
                return View(model);
            }
    private async Task SignInAsync(ApplicationUser user, bool isPersistent)
    {
        AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
    
    //由于ASP.NET身份和OWIN Cookie身份验证是基于声明的系统,因此该框架需要应用程序为用户生成ClaimsIdentity
        var identity = await UserManager.CreateIdentityAsync(
           user, DefaultAuthenticationTypes.ApplicationCookie);
    //通过使用OWIN中的AuthenticationManager并调用SignIn并传入ClaimsIdentity来签署用户。
        AuthenticationManager.SignIn(
           new AuthenticationProperties() { 
              IsPersistent = isPersistent 
           }, identity);
    }

    ⑤注销

    // POST: /Account/LogOff
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult LogOff()
    {
        AuthenticationManager.SignOut();
        return RedirectToAction("Index", "Home");
    }

    二、功能和API

    三、可扩展性

    四、迁移

  • 相关阅读:
    clion打断点不生效
    PHP加密解密
    细说MySQL表操作
    细说MySQL数据库操作
    终端(命令行)连接MySQL
    MySQL结构
    求1!+(1!+3!)+(1!+3!+5!)+...+(1!+3!+5!+7!+9!)的值
    react 生命周期
    React TS 组件 Demo
    react-redux 实现原理
  • 原文地址:https://www.cnblogs.com/zd1994/p/7828616.html
Copyright © 2020-2023  润新知