欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

初识Identity并添加身份验证管理页面

程序员文章站 2022-11-25 20:02:46
@[toc] 初识Identity并添加身份验证管理页面 前言 在 "使用ASP.NET Core2.2创建WebApp" 这篇教程中,我们使用 命令创建了一个没有身份验证管理的WebApp,通常情况下是无法满足我们对敏感页面控制的要求,典型的安全使用场景就是后台管理。 在这一篇中,我们将通过命令尝 ......

@

初识identity并添加身份验证管理页面

前言

使用asp.net core2.2创建webapp这篇教程中,我们使用dotnet new命令创建了一个没有身份验证管理的webapp,通常情况下是无法满足我们对敏感页面控制的要求,典型的安全使用场景就是后台管理。
在这一篇中,我们将通过命令尝试:

  1. 了解asp.net core identity
  2. 使用命令创建带有身份验证的webapp;
  3. 在项目文件夹中找不到身份验证管理的相关页面;
  4. 通过命令使用基架添加身份验证管理文件;
  5. 消除错误,然后run起来;

什么是asp.net core identity

asp.net core 安全性概述
通过 asp.net core,开发者可轻松配置和管理其应用的安全性。 asp.net core 的功能包括管理身份验证、授权、数据保护、https 强制、应用机密、请求防伪保护及 cors 管理。 通过这些安全功能,可以生成安全可靠的 asp.net core 应用。

asp.net core 安全性功能
asp.net core 提供许多用于保护应用安全的工具和库(包括内置asp.net core identity标识提供程序),但也可使用第三方标志服务(如微信、 facebook、twitter 或 linkedin)。 利用 asp.net core 可以轻松管理应用机密,无需将机密信息暴露在代码中就可存储和使用它们。
身份验证 vs 授权
身份验证是这样一个过程:由用户提供凭据,然后将其与存储在操作系统、数据库、应用或资源中的凭据进行比较。 在授权过程中,如果凭据匹配,则用户身份验证成功,可执行已向其授权的操作。 授权指判断允许用户执行的操作的过程。
对身份验证的另一种理解是将其看作进入某一空间(如服务器、数据库、应用或资源)的方式,而将授权看作用户可对该空间(服务器、数据库或应用)内的对象执行的操作。

创建带有身份验证的webapp

新建文件夹prehot,并在此文件夹中打开命令界面,然后输入以下命令:

dotnet new webapp --auth individual

对命令还不熟悉的朋友,可以查看
初识Identity并添加身份验证管理页面

尝试运行

我们可以尝试
初识Identity并添加身份验证管理页面一切ok!

检查解决方案中的项目文件

初识Identity并添加身份验证管理页面

发现问题

如上图,用于身份注册、登录、管理的页面在哪里呢?
在这里我们重新明确一下:

asp.net core identity是一个成员身份管理系统,将登录功能添加到 webapp中。利用这套管理系统,能够非常容易、方便的做到:

  • 创建一个帐户等,或也可以使用外部登录提供程序,比如受支持的外部登录提供程序包括微信、qq、facebook、 google、 microsoft 帐户和 twitter。
  • 我们可以存储登录信息,例如使用 sql server 数据库来存储用户名、 密码和配置文件数据。或者,可用别的的持久存储区,例如,azure 表存储。

以上我们了解asp.net core identity的概念后,回头再看看我们的项目:

  • 我们的项目使用dotnet new webapp --auth individual这条命令创建了带有身份验证的webapp(注意参数auth和individual);
  • 尝试运行,用户注册、登录和退出,一切ok!
  • 但是检查解决方案我们并没有找到相关用户注册、登录、退出等页面文件呢;

原因

从 asp.net core 2.1 及更高版本开始,将asp.net core identity 作为 razor类库(razor class library,rcl)的一部分进行提供,所以当你运行这些注册、登录、退出等相关操作的时候,都是rcl提供的默认模板完成的。
大家一定会提出,那如果我想完成更多的控制,比如修改登录界面、汉化等又怎么办呢?

解决问题

我们知道问题得原因,就好办了!
如果以前未安装 asp.net core 基架,请立即进行安装:

dotnet tool install -g dotnet-aspnet-codegenerator

**添加到包引用microsoft.visualstudio.web.codegeneration.design到项目 (*.csproj) 文件。 在项目目录中运行以下命令:**

dotnet add package microsoft.visualstudio.web.codegeneration.design
dotnet restore

注意下图中高亮的2个位置
初识Identity并添加身份验证管理页面运行以下命令,以列出标识基架更多选项:

dotnet aspnet-codegenerator identity -h

在项目文件夹中,运行所需的选项标识基架。 例如,若要设置默认值 ui 标识和最小的文件数,运行以下命令。 使用数据库上下文的正确完全限定的名称:

dotnet aspnet-codegenerator identity --usedefaultui
//dotnet aspnet-codegenerator identity -dc prehot.data.applicationdbcontext --files account.register

注意所在的命名空间,==prehot==是你的项目名称
使用分号作为命令分隔符, 例如:

dotnet aspnet-codegenerator identity -dc prehot.data.applicationdbcontext --files "account.register;account.login;account.logout"

如果未指定运行标识基架--files标志或--usedefaultui标志,所有可用的标识 ui 页将在项目中创建。
在本项目中,我们选择利用基架添加所有可用identity的ui页面:

dotnet aspnet-codegenerator identity -dc prehot.data.applicationdbcontext 

新增的文件

我们的解决方案中会增加一个文件夹areas,内容包括:
初识Identity并添加身份验证管理页面

最后让我们跑起来