Skip to main content

Asp.net Core Identity代码自动生成

分类:  Asp.net Core认证和授权 标签:  #Asp.Net core基础 #认证 #.Net 发布于: 2023-05-27 18:19:13

我们前面两篇已经讨论了ASP.netCore的认证基本概念和ASP.net Core Identity基本工具的介绍。大家有兴趣的话,可以翻到之前的文章。

我们这一章介绍一下VisualStudio提供的Identity代码生成工具,Identity Scaffold,  本章要求你有Visual studio, Visual Studio提供三个版本,小型的开发其实只需要社区版就可以了,另外及其推荐Visual Studio 增加两个插件: Github & VsVim, 这两个插件简直是神器。

不得不再吹一句:VisualStuido 真不愧是宇宙中第一的开发利器。真香!

首先我们来使用Visualstuido来快速的生成一个基于ASP.net Core Identity的Web 应用(默认的模板是基于Razor Page的,你可以选择基于MVC模板的)

  1. 启动Visual studio, 创建新的方案,选择基于C#的Web应用,如下图:

  2. 选择下一步,填好项目名称之后,再选择下一步,注意 Authentication Type, 选择Individual Account, 即代表启用Identity的使用。

通过这个步骤可以生成一个已经集成了Identity的项目,那么如果利用代码生成工具来将Identity集成到已有的项目中去。我们新建一个项目,并且在选择Authentication Type的时候选择None, 代表不集成Identity 工具,新创建的项目图示如下:由于Identity是以Area的形式加入到现有的项目中,因此你会发现Identity的项目路径都是以/Identity/作为前缀的项目路径。


下面我们使用VisualStudio的Scaffold工具来添加对项目的认证的支持。

 

1.在项目上点击右键,然后选择Add ->  New Scaffolded Item …


2. 选择Identity, 然后Add


3. 前面我讨论过Identity是以RCL的形式发布的,因此第一步我们需要给Identity 选择合适的Layout, 如果是Razor Page 应用,可以留空会使用Identity自带的Layout, 也可以选择~/Pages/Shared/_Layout.cshtml,  然后让你选择你要覆盖的页面,从这个图也可以清晰的看到Identity到底实现了哪些功能,如果是想学习Identity到底是如何实现的,可以选择覆盖所有页面:


4. 最为重要的是需要选择Data Context class,  我们知道Identity是基于EF Core的组件,如果已经在项目中定义了一个DBContext类,那么这里可以直接选择,如果没有,那么点击+创建一个:


5. 你也可以定义自己的用户类,在User Class这里选择创建一个自定义的,否则用户类名就是IdentityUser.


点击确定之后,可以观察到Identity已经以Area的形式加入到了项目中,如下图所示:由于我们选择了覆盖所有的Identity的文件,因此这里可以看到所有的UI组件,如果我们要定制UI组件,可以考虑直接更改这些组件就可以了。


另外需要注意的是,我们使用Scaffold工具生成的代码对于Identity的初始化放在了文件:


如下是文件的配置:


关于HostingStartup,请参考文档:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/platform-specific-configuration?view=aspnetcore-5.0

当然你可以直接删掉这个文件,回到项目根目录下的Startup类中重新对Identity进行配置。

以上是使用ASP.net Core Identity Scaffold工具的介绍。