[Solution] ASP.NET Identity(1) 快速入门
本节将介绍:
身份管理在ASP.NET中存在很长世间了,ASP.NET 开发团队已经学会了很多从客户的反馈。
用户越来越不喜欢在每个网站都单独注册一个账号,用户希望通过社交平台的账号,开发人员也希望如此。
随着web的开发,单元测试页越来越重要。在2008年,Aspnet添加了MVC,部分原因是为了帮助开发人员构建单元测试。开发人员希望身份管理也可以单元测试。
ASP.NET Identity遵循以下几点:
1.一个身份系统。
可以用在ASP.NET所有框架下,例如ASP.NET MVC,Web Forms,Web Pages,Web API以及SignalR。
2.配置用户数据
可以控制用户的配置信息。例如,启用系统来存储程序中注册账号的用户输入的出生日期。
3.数据库
默认情况下,ASP.NET Identity将存储所有用户数据,通过EF CodeFirst来改善持久性机制。这样就能轻松的跨数据库,如SharePoint,Azure Storage,NoSQL databases。
4.单元测试
ASP.NET Identity可以使你的web程序有更多的单元测试。
5.提供角色功能
有一个role provider方便你轻松的创建角色,如“Admin”和向角色添加用户。
6.基于声明
ASP.NET Identity支持基于声明的身份验证,其中用户的身份作为一组声明,声明允许开发者描述用户的身份,角色至少应该bool值(会员或非会员),声明可以包含大量的用户信息和会员信息。
7.社交账号
可以非常方便的将社交插件集成进来。如微软账号,Facebook等,和在你的程序中存储特定的用户数据。
8.活动目录
9.OWIN
现在,ASP.NET Identity基于OWIN中间件,可以在任何基于OWIN的主机上使用。不依赖于System.Web程序集。
ASP.NET Identity用OWIN Authentication用来登入登出。使用CookieAuthentication来操作。
10.Nuget
通过Nuget来管理ASP.NET Identity,这样bug修复,更新更快。
在本例中,我们会说明项目模板如何使用 ASP.NET 身份来添加功能来注册、 登录和注销用户。
1.创建MVC程序with个人身份
2.创建的项目中会有3个程序用于ASP.NET Identity.
Microsoft.AspNet.Identity.EntityFramework
ASP.NET Identity使用EF CodeFirst持久化技术Microsoft.AspNet.Identity.Core
ASP.NET Identity核心接口. 这个程序集实现了不同的存储库存储Azure Table Storage, NoSQL databases等等.Microsoft.AspNet.Identity.OWIN
通过OWIN Cookie Authentication middlewar 管理Cookie来管理登入登出。
3.创建用户
运行项目,点击注册链接,注册用户。当填完注册信息后,点击注册按钮时。会执行以下Action。
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = new ApplicationUser() { UserName = model.UserName }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await SignInAsync(user, isPersistent: false); return RedirectToAction("Index", "Home"); } else { AddErrors(result); } } // 如果我们进行到这一步时某个地方出错,则重新显示表单 return View(model); }
红色区域用来创建用户,粉色区域用来登录用户。以下为登录用户方法。
private async Task SignInAsync(ApplicationUser user, bool isPersistent) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity); }
红色区域创建一个身份声明,声明包括用户所有声明信息,包括用户角色。你可以自定义声明内容。
粉色区域通过OWIN登录系统。(生成Cookie)
4.登出
点击登出按钮,会触发以下Action
[HttpPost] [ValidateAntiForgeryToken] public ActionResult LogOff() { AuthenticationManager.SignOut(); return RedirectToAction("Index", "Home"); }
红色区域通过OWIN的FormsAuthentication登出系统。
1.ASP.NET Identity组件
2.表结构
使用ASP.NET Identity,会自动生成以下几张表。
代码下载:点击下载
本文作者:Never、C
本文链接:http://www.cnblogs.com/neverc/p/4727024.html
Identity:https://github.com/aspnet/Identity