ASP.NET Identity系列01,揭开神秘面纱
早在2005年的时候,微软随着ASP.NET 推出了membership机制,十年磨一剑,如今的ASP.NET Identity是否足够强大,一起来体会。
在VS2013下新建项目,选择"ASP.NET Web应用程序。",点击"确定"。
选择"MVC"模版。
创建的网站包括三个核心组件:
1、Microsoft.AspNet.Identity.EntityFramework
这是基于ASP.NET Identity的Entity Framework实现,用来持久化ASP.NET Identity数据和架构,以及负责和SQL Server数据库交互。
2、Microsoft.AspNet.Identity.Core
包含了ASP.NET Identity的核心接口,用来针对不同的持久层,比如Azure Table Storeage, NoSQL数据库等做不同的实现。
3、Microsoft.AspNet.Identity.OWIN
OWIN是一个安全中间件,Microsoft在此基础上作了再开发,如记录日志,产生cookie的时候用到。
各组件的依赖关系如图:

F5运行项目。
点击右上角的注册按钮,填写注册信息,点击"注册"按钮,新用户注册成功并呈登录状态。
点击VS2013的"停止调试"按钮。
存储的数据放在了哪呢?
右键App_Data,点击"在文件资源管理器中打开文件",原来数据库被存放在项目文件夹App_Data下了。

如何查看这些数据呢?
点击VS2013的左上角"服务器资源管理器",右键"DefaultConnection",从中可以查看所有的数据。

比如用户数据被存放在表"AspNetUsers"中。

点击"注册"按钮,是把请求交给了AcccountController的Register这个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);}
以上,
● 通过ApplicationUser来实例化一个用户
● 通过UserManager的静态、异步方法CreateAsync创建用户
● 通过异步方法SignInAsync来让用户登录
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);}
以上
● 所有验证的事交给了AuthenticationManager,负责登录登出
● 把创建ClaimsIdentity交给了UserManager
至于登出,请求交给了AccountController的LogOff。
[HttpPost][ValidateAntiForgeryToken]public ActionResult LogOff(){AuthenticationManager.SignOut();return RedirectToAction("Index", "Home");}
以上,还没有看到ASP.NET Idenity有多少过人之处,让时间来告诉我们。
ASP.NET Identity系列01,揭开神秘面纱的更多相关文章
- 【ASP.NET Identity系列教程(三)】Identity高级技术
注:本文是[ASP.NET Identity系列教程]的第三篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...
- ASP.NET Identity系列教程(目录)
$(document).ready(function(){ $("#hide").click(function(){ $(".en").hide(); }); ...
- 【ASP.NET Identity系列教程(一)】ASP.NET Identity入门
注:本文是[ASP.NET Identity系列教程]的第一篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...
- 【ASP.NET Identity系列教程(二)】运用ASP.NET Identity
注:本文是[ASP.NET Identity系列教程]的第二篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...
- ASP.NET Identity系列教程(目录)转载
来源:http://www.cnblogs.com/r01cn/p/5179506.html 注:最近看到不少介绍微软ASP.NET Identity技术的文章,但感觉都不够完整深入,本人又恰好曾在A ...
- ASP.NET Identity系列教程-1目录
https://www.cnblogs.com/hao-1234-1234/p/8857437.html ASP.NET Identity系列教程 13 Getting Started with Id ...
- ASP.NET Identity 系列笔记目录
编写目的 混迹博客园已经有一段时间了,一直都是在学习各路大神的文章,自己却没有做出什么贡献,所以觉得应该写一点点内容和大家一起分享.但是本人实在才疏学浅,有心无力啊!正好最近在学习 Microsoft ...
- ASP.NET Identity系列02,在ASP.NET MVC中增删改查用户
本篇体验在ASP.NET MVC中使用ASP.NET Identity增删改查用户. 源码在这里:https://github.com/darrenji/UseIdentityCRUDUserInMV ...
- ASP.NET Identity系列教程-4【Identity高级技术】
https://www.cnblogs.com/r01cn/p/5194257.html 15 ASP.NET Identity高级技术 In this chapter, I finish my de ...
随机推荐
- 【转载】linux ls -l命令详解
Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loca ...
- linux使用badblocks命令扫描硬盘排除故障(待验证)
检查硬盘是否产生坏道并输出# badblocks -s -v -o /root/badblocks.log /dev/sda //公司操作 -s Show the p ...
- iis6 和iis7s上整个网站重定向
iis6 和iis7s上整个网站重定向 重定向作用: 重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置.举例说明:就像我XX公司,之前用的网络域名是“www.bb. ...
- spring-web.xml 模板
ssm模板 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:/ ...
- jQuery.lazyload详解(转)
转自:http://www.cnblogs.com/wenbo/archive/2011/07/15/2107579.html <script type="text/javascrip ...
- Git(三)Git的远程仓库
一. 添加远程库 现在我们已经在本地创建了一个Git仓库,又想让其他人来协作开发,此时就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份.常用的远程仓库就是github:https://g ...
- 【LOJ】#2493. 「BJOI2018」染色
题面 题解 推结论大题--然而我推不出什么结论 奇环显然是NO 如果一个联通块里有两个分离的环,也是NO 如果一个联通块里,点数为n,边数为m m <= n的时候,是YES m >= n ...
- Codeforces Round #284 (Div. 1) C. Array and Operations 二分图匹配
因为只有奇偶之间有操作, 可以看出是二分图, 然后拆质因子, 二分图最大匹配求答案就好啦. #include<bits/stdc++.h> #define LL long long #de ...
- SpringBoot与SpringCloud学习指南
推荐一个Spring Boot的导航网站:Spring Boot 中文导航 Spring boot使用的各种示例,以最简单.最实用为标准 spring-boot-helloWorld:spring-b ...
- [js]BOM篇
一.什么是BOM BOM(Browser Object Model)即浏览器对象模型. BOM提供了独立于内容 而与浏览器窗口进行交互的对象: 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对 ...