ASP.NET MVC5 身份系统Identity

有关MVC框架基础知识请移步=>传智播客,下载相关入门视频耐心看完:

http://net.itcast.cn/subject/tegongnet/index.html

有关微软ASP.NET MVC框架上一版本身份系统知识,请移步=>Jesse Liu的博客参考相关文章:

http://www.cnblogs.com/jesse2013/p/membership.html

网上已经有一篇写了一章就太监的教程:

http://www.cnblogs.com/liuhaorain/p/3776467.html

准备工作:

一、先是基本建立工程,三个图完事。

二、请大家下载.NET Reflector反编译工具,这是每个.NET开发人员必备的工具:(这个蛮重要的,很多底层代码一看,上层为什么那么写就完全明白了)

http://www.wuleba.com/19035.html

具体破解方法不再赘述,非本文重点,请自行解决。

现在,让我们开始解刨这个看起来很大的框架吧!

一、我列出了在项目自动生成的文件中,需要我们重点关注的类文件(.cs):

1.App_Start文件夹中的:

  Startup.Auth.cs  

    //这个文件里,只有一个ConfigureAuth方法,此方法在根目录的Startup.cs中被调用。

    //在此方法里,你可以调用(app.Use/或其他方法名,貌似是用了Node的命名法)来加载有关身份验证所需要的某些“中间件(middleware)”

    //微软给了很多例子,比如:

      //1.配置数据库上下文app.CreatePerOwinContext(ApplicationDbContext.Create);

        //使用EntityFrameWork Code First 封装数据库的信息,集成很多巨方便的数据操作类库

      //2.初始化用户管理器和登录管理器

        //app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
        //app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

        //两个createxxx里面封装好的很多方法可直接用来登录,注销,注册,验证邮箱等,很方便

        //你去控制器里看其实注册登录只需要一句 await LoginAsync(...)/CreateAsync(...)就行了 

      //3.还有什么Cookie登录,记住我功能,外站账号登陆等,都是封装好的逻辑方法

        //每一个app.Use(...)其实背后都有超多的逻辑代码,每个Use又只做了一件事,充分体现了强大的高内聚松耦合的框架特性!

  IdentityConfig.cs  

    //这里面有四个类:

      //前两个是SMS短信和Email服务,非本章重点,略

      //后面两个分别是:

        ApplicationUserManager : UserManager<ApplicationUser>

        ApplicationSignInManager : SignInManager<ApplicationUser, string>

      //从名字上可以看出是“用户管理器”和“登录管理器”,其实说白了就是封装了操作Identity数据库的方法+登录用到的方法

      //比如异步登录/注册的  LoginAsync(/*paras*/),createAsync(/*paras*/)

      //比如异步插入+保存数据的InsertAsync(/*paras*/)  SaveChanges(); 有的是些EF框架的东西

      //后面的文章会反编译这两个类,看看具体的逻辑是什么大家就懂了。

2.Controllers文件夹中的:

  AccountController.cs

  //控制器,具体的后文详述

3.Models文件夹中的:

  IdentityModels.cs

  //这里面有两个类:

    ApplicationUser : IdentityUser

    ApplicationDbContext : IdentityDbContext<ApplicationUser>

  //前者代表了用户表,后者代表了Identity数据库。

*4.根目录最底下的那个

  Startup.cs  

    //这个里面只有一个Configuration(IAppBuilder app)方法

    //用自己的app参数调用上面那个Startup.Auth.cs文件里的那个ConfigureAuth(app);

    //关于Configuration这个方法,简单理解是 “类似C语言中main函数”

    //网站运行后,框架底层帮助我们封装了程序的信息到app这个对象里,然后传递app到这个Configuration里,开始整个网站的运行。

    //我们可以查看一下这个东西里面到底有什么:

    //它是实现IAppBuilder接口的一个AppBuilder类的实例对象,里面主要是有个字典类的字段,运行后它是这个样子的:

    

    //可以看到是一些host信息及“其他”不明信息,不是本系列的重点,就点到这里。

原文地址:https://www.cnblogs.com/Xsdd/p/4339750.html