一、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
三、可扩展性
四、迁移