[Solution] ASP.NET Identity(1) 快速入门
本节将介绍:
ASP.NET Identity简介
身份管理在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
[Solution] ASP.NET Identity(1) 快速入门的更多相关文章
- [Solution] ASP.NET Identity(2) 空的项目使用
在本节中,我将说明将ASP.NET Identity添加到现有的项目或者一个空项目.我将介绍你需要添加的Nuget和Class.此示例中,会使用LocalDB. 本节目录: 注册用户 登入登出 注册用 ...
- asp.net core WebApi 快速入门
参考:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.1 官网的例子 直接 ...
- ABP(ASP.NET Boilerplate Project)快速入门
前言 这两天看了一下ABP,做个简单的学习记录.记录主要有以下内容: 从官网创建并下载项目(.net core 3.x + vue) 项目在本地成功运行 新增实体并映射到数据库 完成对新增实体的基本增 ...
- IdentityServer4 中文文档 -10- (快速入门)使用密码保护API
IdentityServer4 中文文档 -10- (快速入门)使用密码保护API 原文:http://docs.identityserver.io/en/release/quickstarts/2_ ...
- IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity
IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity 原文:http://docs.identityserver.io/en/release ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【ASP.NET Identity系列教程(一)】ASP.NET Identity入门
注:本文是[ASP.NET Identity系列教程]的第一篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...
- 第17章 社区快速入门和模板 - Identity Server 4 中文文档(v1.0.0)
IdentityServer组织不维护这些示例.IdentityServer组织愉快地链接到社区模板,但不能对模板做出任何保证.请直接与作者联系. 17.1 各种ASP.NET核心安全样本 https ...
- 【笔记目录1】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总
当前标签: ASP.NET Core快速入门 共2页: 1 2 下一页 任务50:Identity MVC:DbContextSeed初始化 GASA 2019-03-02 14:09 阅读:16 ...
随机推荐
- Aapache status / apache2ctl status 总是403
默认apache2ctl status访问的是http://localhost:80/server_status 所以得搞定default这个站点,放歌html就可以了. 在default的配置里加入 ...
- 修改ulimit
ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小.进程数据块的大小.Shell 进程创建文件的大小.内存锁住的大小.常驻内存集的大小.打开文件描 ...
- SVO实时全局光照优化(里程碑MK0):Sparse Voxel Octree based Global Illumination (SVO GI)
完全自主实现,bloat-free.再次声明,这不是UE.U3D.CE.KlayGE! 老规矩,先贴图.后面有时间再补充描述. 1. 支持多跳间接全局光照2. 支持vxao/so.vxdiff/spe ...
- [Aaronyang] 写给自己的WPF4.5 笔记23 [3d交互与动画 4/4]
效果图预览: 1. 3d中的命中测试 我新建了一个空的窗口,用zam做了一个长方体,深度很小.然后导出xaml <Viewport3D x:Name="ZAM3DViewport3D& ...
- java/.net-常用工具下载地址&常用学习网址&快捷键
HTML5 HTML5:http://www.html5cn.org/ php常用网址 thinkphp框架:http://www.thinkphp.cn/ wampserver开发服务器:http: ...
- android 渐变展示启动屏
启动界面Splash Screen在应用程序是很常用的,往往在启动界面中显示产品Logo.公司Logo或者开发者信息,如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段 ...
- 移动应用安全开发指南(Android)--完结篇(http://www.bubuko.com/infodetail-577312.html)
1.认证和授权 概述 认证是用来证明用户身份合法性的过程,授权是用来证明用户可以合法地做哪些事的过程,这两个过程一般是在服务器端执行的,但也有的APP出于性能提升或用户体验等原因,将其做在客户端完成, ...
- ch5 MySQL 备份与恢复
第 5 章 MySQL 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 My ...
- Hadoop2.x源码-编译剖析
1.概述 最近,有小伙伴涉及到源码编译.然而,在编译期间也是遇到各种坑,在求助于搜索引擎,技术博客,也是难以解决自身所遇到的问题.笔者在被询问多次的情况下,今天打算为大家来写一篇文章来剖析下编译的细节 ...
- 日常工作中的点滴总结from 2014-03
一 关于 写方案: 写某个产品的方案基本应包括以下几点: 1产品目前现状(国内外) 2产品意义.作用 3产品架构 4产品优势 5产品功能讲解 二 关于 处理下属工作方向不正确的事务 首先 先肯定 下 ...