[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 ...
随机推荐
- iOS 同一设备内的应用之间资源共享的实现
我们都知道,iOS为安全考虑,各应用只能使用其自已的应用沙盒内的存储空间,各应用之间是不能互相访问彼此的沙盒空间的. 另外,iOS设备都没有外置存储卡,这样,象 Android 设备间共同访问外置存储 ...
- SK-Learn使用NMF(非负矩阵分解)和LDA(隐含狄利克雷分布)进行话题抽取
英文链接:http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf_lda.html 这 ...
- CSS层叠样式表的层叠是什么意思(转自知乎)
转自知乎上的回答:http://www.zhihu.com/question/20077745 解答一: 层叠指的是样式的优先级,当产生冲突时以优先级高的为准.1. 开发者样式>读者样式> ...
- 文件系统管理 之 Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
一.df 命令:df 是来自于coreutils 软件包,系统安装时,就自带的:我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置: 举例: [root@localhost beinan] ...
- 定时5秒之后驻留在元素ID为content元素的内容
如果我只能刷新一个特定的页面的一部分,这将是很大的,例如:仪表盘上的交通灯显示系统状态. 这是很容易通过使用jQuery JavaScript库,只刷新页面的一部分.一旦我们纳入我们的页面的jQuer ...
- The Monty Hall Problem
GNG1106 Lab 3The Monty Hall ProblemBackgroundThe Monty Hall Problem is a famous probability puzzle, ...
- 关于Unity程序在IOS和Android上显示内嵌网页的方式
近期因为有须要在Unity程序执行在ios或android手机上显示内嵌网页.所以遍从网上搜集了一下相关的资料.整理例如以下: UnityWebCore 从搜索中先看到了这个.下载下来了以后发现这个的 ...
- Java对象创建阶段的代码调用顺序
在创建阶段系统通过下面的几个步骤来完成对象的创建过程 为对象分配存储空间 开始构造对象 从超类到子类对static成员进行初始化 超类成员变量按顺序初始化,递归调用超类的构造方法 子类成员变量按顺序初 ...
- 菜鸟类库诞生记二:通过反射转换DataRow为对象
虽然大数据量的环境下,通过反射转换DataRow为对象性能会很低,但是在数据量适中的时候,这样能够减少很多的代码量,性能也确实不错. 所以在数据量不是很大的情况下,推荐使用. 如果数据量很大,可以使用 ...
- apache 配置反向代理服务器
前几天实验了下 nginx 配置反向代理服务器.虽然 nginx 的安装很麻烦,但是用起来倒是很简单.不过组里没人用过 nginx,apache 服务器大家倒是蛮熟,为了减少 ops team 的工作 ...