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 Timer定时器【转】
转自:https://www.jianshu.com/p/66b3c75cae81 timerfd为Linux为用户程序提供的定时器接口,该接口基于文件描述符,通过文件描述符的可读事件进行超时通知,且 ...
- easyui表格,单元格合并
easyui的合并单元格比较麻烦,官网提供一下方法 $('#tt').datagrid({ onLoadSuccess:function(){ var merges = [{ index:2, row ...
- mysql存储表情字符
windows下是my.inilinux下是my.cnf 路径是: /etc/my.cnf 参考: https://blog.csdn.net/fhzaitian/article/details/53 ...
- Java编程的逻辑 (28) - 剖析包装类 (下)
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- centos redis 自动重启
配置init脚本 对于Centos,有一份https://gist.github.com/1335694 经过修改,如下: ########################## PATH=/usr/l ...
- MyBatis使用示例
下面是一个简单的MyBatis使用DEMO. 整体结构 整体代码大致如下: POM依赖 需要引用两个jar包,一个是mybatis,另一个是mysql-connector-java,如果是maven工 ...
- Codeforces 311B Cats Transport 斜率优化dp
Cats Transport 出发时间居然能是负的,我服了... 卡了我十几次, 我一直以为斜率优化写搓了. 我们能得出dp方程式 dp[ i ][ j ] = min(dp[ k ][ j - 1 ...
- zabbix 自动发现
转自:https://blog.csdn.net/yyy72999/article/details/76065374 zabbix自动发现/zabbix自动发现规则 置顶2017年07月25日 14: ...
- 9-2 The Tower of Babylon uva437 (DP)
题意:有n种立方体 每种都有无穷多个 要求选一些立方体叠成一根尽量高的柱子 (可以自行选择哪条边为高 )使得每个立方体的底面都严格小于他下方的立方体 为DAG模型 在任何时候 只有顶面的尺寸会影响到 ...
- java中的PO,VO,TO,BO,DAO,POJO的解释
java的(PO,VO,TO,BO,DAO,POJO)解释 O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定 ...