网站域名注册证书免费的黄冈网站有哪些平台游戏软件

bicheng/2026/1/20 12:20:13/文章来源:
网站域名注册证书,免费的黄冈网站有哪些平台游戏软件,ai做图标教程网站,沈阳小装修公司哪家好一、前言在上篇中简单介绍了 Asp.Net Core 自带的 Identity,一个负责对用户的身份进行认证的框架#xff0c;当我们按需选择这个框架作为管理和存储我们应用中的用户账号数据的时候#xff0c;就会添加到自己的项目当中去。这个时候#xff0c;默认情况我们会使用自带的数据… 一、前言在上篇中简单介绍了 Asp.Net Core 自带的 Identity,一个负责对用户的身份进行认证的框架当我们按需选择这个框架作为管理和存储我们应用中的用户账号数据的时候就会添加到自己的项目当中去。这个时候默认情况我们会使用自带的数据模型但是考虑到需求的情况我们可以通过自定义的方式更新数据模型来达到我们的需求。二、初识在上篇中我们完成了数据迁移加上项目的搭建其中ApplicationDbContext是负责与Identity标识相关的用户继承于IdentityDbContext上下文。当然了我们发现根据这个上下文的扩展性可以自定义用户数据进行配置。比如自定义扩展的用户数据类来继承于IdentityUser类更改用户数据模型属性更改主键、更改表名列名等来满足我们的业务要求。三、实践接着上篇的WebIdentityDemoV3.1项目将自定义用户数据添加到Identity DB自定义扩展的用户数据类应继承IdentityUser类 文件名为Areas / Identity / Data / {项目名称}User.cs。3.1 表说明这个就是我们要准备自定义的用户数据本示例是直接继承于 「Asp.Net Core 自带的 Identity」的。光从数据库表名上我们就知道其中的含义了就是用户角色管理。数据说明_EFMigrationsHistory 是 Ef的迁移历史表。AspNetUserClaims、AspNetRoleClaims是用户和角色的声明表Claim在其中扮演者很重要的角色甚至角色Role都被转换成了Claim可以了解之前说到的认证授权模式。AspNetUsers、AspNetRoles和AspNetUserRoles存储用户和角色信息。AspNetUserTokens 用于外部验证的「Token」存储。AspNetUserLogins  保留如 Google, Facebook, Twitter QQ等第三方登录的信息。3.2 自定义模型上下文用于通过两种方式配置模型为泛型类型参数提供实体和键类型。重写 OnModelCreating 以修改这些类型的映射。重写时 OnModelCreating base.OnModelCreating 应首先调用然后调用重写配置。EF Core 通常具有用于配置的最后一个 wins 策略。例如如果 ToTable 先使用一个表名称调用实体类型的方法然后再使用另一个表名称再次调用该方法则使用第二个调用中的表名。3.3 自定义数据这里以用户类进行举例说明3.3.1 自定义用户类定义ApplicationUser类继承于IdentityUser用户数据类 自定义类命名约定 {Application}User。    public class ApplicationUser:IdentityUser{ /// summary/// 用户编号/// /summarypublic string UserNo { get; set; }/// summary/// 真实姓名/// /summarypublic string UserTrueName { get; set; }} 3.3.2 修改服务配置将原来Startup文件中的ConfigureServices服务配置中的IdentityUser改成ApplicationUserservices.AddDefaultIdentityIdentityUser(options  options.SignIn.RequireConfirmedAccount  true).AddEntityFrameworkStoresApplicationDbContext(); 改成services.AddDefaultIdentityApplicationUser(options  options.SignIn.RequireConfirmedAccount  true).AddEntityFrameworkStoresApplicationDbContext(); 3.3.3 修改上下文将原来ApplicationDbContext上下文继承于IdentityDbContext,改成IdentityDbContextApplicationUser「原来的」public class ApplicationDbContext : IdentityDbContext {public ApplicationDbContext(DbContextOptionsApplicationDbContext options): base(options){} } 「改成」将 ApplicationUser 类型用作上下文的泛型参数public class ApplicationDbContext : IdentityDbContextApplicationUser {public ApplicationDbContext(DbContextOptionsApplicationDbContext options): base(options){} } 3.3.4 数据迁移#1.存在数据库则先删除数据库 # Drop-Database (PMC) 或 dotnet ef database drop ( .NET Core CLI) #2.确认删除数据库后删除迁移 # Remove-Migration (PMC) 或 dotnet ef migrations remove ( .NET Core CLI) # 再进行更新数据模型 添加迁移转换成相应的数据库 PM Add-Migration CreateIdentitySchema2 -c ApplicationDbContext -o Data/Migrations PM Update-Database CreateIdentitySchema2 「效果如下」可以发现有对应的自定义字段了。3.3.5 更新替换如果之前已经搭建好了项目那么你需要将IdentityUser类改成自定义的ApplicationUser类。更新 Pages/Shared/_LoginPartial 并将替换 IdentityUser 为 ApplicationUser using Microsoft.AspNetCore.Identity using WebApp1.Areas.Identity.Data inject SignInManagerApplicationUser SignInManager inject UserManagerApplicationUser UserManager ❝具体的其他替换修改方法就不说明演示了。❞3.4 更改主键类型在创建数据库之后更改PK列的数据类型在许多数据库系统上都存在问题。更改PK通常涉及删除和重新创建表。「因此在创建数据库时应在初始迁移中指定PK类型」。下面是更改主键类型步骤3.4.1 更改表主键类型这里以ApplicationUser类为例修改相关代码    // 用户表设置主键为Intpublic class ApplicationUser : IdentityUserGuid{/// summary/// 用户编号/// /summarypublic string UserNo { get; set; }/// summary/// 真实姓名/// /summarypublic string UserTrueName { get; set; }}3.4.2 修改上下文    public class ApplicationDbContext : IdentityDbContextApplicationUser, IdentityRoleGuid, Guid 3.4.3 修改服务配置       services.AddDefaultIdentityApplicationUser(options  options.SignIn.RequireConfirmedAccount  true).AddEntityFrameworkStoresApplicationDbContext(); 3.4.4 数据迁移#1.存在数据库则先删除数据库 # Drop-Database (PMC) 或 dotnet ef database drop ( .NET Core CLI) #2.确认删除数据库后删除迁移 # Remove-Migration (PMC) 或 dotnet ef migrations remove ( .NET Core CLI) # 再进行更新数据模型 添加迁移转换成相应的数据库 PM Add-Migration CreateIdentitySchema2 -c ApplicationDbContext -o Data/Migrations PM Update-Database CreateIdentitySchema2  此时表的主键类型已修改完成包括关系表的外键类型也同步更新了「效果如下」  3.5 更改表名和列名3.5.1 更改表名再更改表名之前请先调用 base.OnModelCreating 。然后添加配置覆盖默认表名,同时定义主键。这里的示例以将默认表名改为以tbl开头命名的表名        protected override void OnModelCreating(ModelBuilder builder){var maxKeyLength  256;base.OnModelCreating(builder);//自定义修改表名以tbl命名开头builder.EntityApplicationUser(b {b.ToTable(TblUsers);});builder.EntityIdentityUserClaimGuid(b {//定义主键b.HasKey(u  u.Id);b.ToTable(TblUserClaims);});builder.EntityIdentityUserLoginGuid(b {b.HasKey(u  new { u.LoginProvider, u.ProviderKey });b.ToTable(TblUserLogins);});builder.EntityIdentityUserTokenGuid(b {b.HasKey(u  new { u.UserId, u.LoginProvider, u.Name });b.ToTable(TblUserTokens);});builder.EntityIdentityRoleGuid(b {b.HasKey(u  u.Id);b.ToTable(TblRoles);});builder.EntityIdentityRoleClaimGuid(b {b.HasKey(u  u.Id);b.ToTable(TblRoleClaims);});builder.EntityIdentityUserRoleGuid(b {b.HasKey(u  new { u.UserId, u.RoleId });b.ToTable(TblUserRoles);});}} 如果使用之类的应用类型 ApplicationUser 请配置该类型而不是默认类型。3.5.2 更改列名下面的示例将更改某些列名按需更改protected override void OnModelCreating(ModelBuilder builder) {base.OnModelCreating(modelBuilder);modelBuilder.EntityApplicationUser(b {b.Property(e  e.PasswordHash).HasColumnName(Password);}); } 3.5.3 更改长度某些类型的数据库列可以配置某些 方面 (例如 string 允许) 最大长度。protected override void OnModelCreating(ModelBuilder builder) {base.OnModelCreating(modelBuilder);modelBuilder.EntityApplicationUser(b {b.Property(u  u.UserName).HasMaxLength(128);b.Property(u  u.NormalizedUserName).HasMaxLength(128);b.Property(u  u.Email).HasMaxLength(128);b.Property(u  u.NormalizedEmail).HasMaxLength(128);});  } 3.5.4 数据迁移#进行更新数据模型 添加迁移转换成相应的数据库 PM Add-Migration CreateIdentitySchema2 -c ApplicationDbContext -o Data/Migrations PM Update-Database CreateIdentitySchema2  此时表的主键类型已修改完成包括关系表的外键类型也同步更新了「效果如下」3.6 初始化数据库在创建项目时候我们可以提前做好初始化数据的准备将数据作为种子处理迁移到创建的数据库中进行初始化操作。3.6.1 创建文件创建SeedData.cs文件用于初始化基础数据    public class SeedData{public static void EnsureSeedData(IServiceProvider serviceProvider){Console.WriteLine(Seeding database...);using (var scope  serviceProvider.GetRequiredServiceIServiceScopeFactory().CreateScope()){var context  scope.ServiceProvider.GetServiceApplicationDbContext();context.Database.Migrate();var userMgr  scope.ServiceProvider.GetRequiredServiceUserManagerApplicationUser();var alice  userMgr.FindByNameAsync(alice).Result;if (alice  null){alice  new ApplicationUser{UserName  alice};var result  userMgr.CreateAsync(alice, Pass123$).Result;if (!result.Succeeded){throw new Exception(result.Errors.First().Description);}result  userMgr.AddClaimsAsync(alice, new Claim[]{new Claim(JwtClaimTypes.Name, Alice Smith),new Claim(JwtClaimTypes.GivenName, Alice),new Claim(JwtClaimTypes.FamilyName, Smith),new Claim(JwtClaimTypes.Email, AliceSmithemail.com),new Claim(JwtClaimTypes.EmailVerified, true, ClaimValueTypes.Boolean),new Claim(JwtClaimTypes.WebSite, http://alice.com)}).Result;if (!result.Succeeded){throw new Exception(result.Errors.First().Description);}Console.WriteLine(alice created);}else{Console.WriteLine(alice already exists);}var bob  userMgr.FindByNameAsync(bob).Result;if (bob  null){bob  new ApplicationUser{UserName  bob};var result  userMgr.CreateAsync(bob, Pass123$).Result;if (!result.Succeeded){throw new Exception(result.Errors.First().Description);} result  userMgr.AddClaimsAsync(bob, new Claim[]{new Claim(JwtClaimTypes.Name, Bob Smith),new Claim(JwtClaimTypes.GivenName, Bob),new Claim(JwtClaimTypes.FamilyName, Smith),new Claim(JwtClaimTypes.Email, BobSmithemail.com),new Claim(JwtClaimTypes.EmailVerified, true, ClaimValueTypes.Boolean),new Claim(JwtClaimTypes.WebSite, http://bob.com),new Claim(location, somewhere)}).Result;if (!result.Succeeded){throw new Exception(result.Errors.First().Description);}Console.WriteLine(bob created);}else{Console.WriteLine(bob already exists);}}Console.WriteLine(Done seeding database.);Console.WriteLine();}} 配置添加自定义用户信息和身份。3.6.2 调用方法然后我们可以从主入口Main方法调用它        public static void Main(string[] args){var seed  args.Contains(/seed);if (seed){args  args.Except(new[] { /seed }).ToArray();}var host  CreateHostBuilder(args).Build();if (seed){SeedData.EnsureSeedData(host.Services);}host.Run();} 3.6.3 程序运行输入 dotnet run /seed3.6.4 效果总结本篇简单介绍了对Identity自定义用户以及表结构说明以及根据自定义更改生成模型并添加到示例项目当中。后续会将此身份认证机制来应用到「IdentityServer4」中使用进行用户角色管理存储操作。如果有不对的或不理解的地方希望大家可以多多指正提出问题一起讨论,不断学习,共同进步。项目地址https://github.com/i3yuan/AspNetIdentityDemo附加「Identity ASP.NET Core 中的模型自定义」

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序后端开发海南seo快速排名优化多少钱

在PHP中使用WebSocket进行实时通信涉及到创建WebSocket服务器和与客户端建立WebSocket连接。以下是一般的步骤: 选择WebSocket库: 首先,您需要选择一个合适的PHP WebSocket库。一些流行的WebSocket库包括 Ratchet、ReactPHP、PHP-Websockets …

网站开发指南网上举报平台

一、数据可视化 - 折线图可视化 1.1、json数据格式 """ 演示JSON数据和Python字典的相互转换 """ import json # 准备列表,列表内每一个元素都是字典,将其转换为JSON data [{"name": "张大山", &quo…

网站建设工作自策划实施以来品牌传播策划方案

maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第1篇。 为什么我们要学习maven? 学习某些技术,肯定是我们遇到了某些问题,而这些问题目前手头上没有很好的方案去解决,此时刚好有一种技术可以…

建设厅官方网站网站建设漂亮的模板

7月14日科技新闻早知道,一分钟速览。 1.华为申请注册盘古大模型商标: 据天眼查 App 显示,7 月 7 日,华为技术有限公司申请注册“华为云盘古”、“Huawei Cloud Pangu Models”文字及图形商标,国际分类为网站服务、社…

重庆建站会话框插件wordpress

文章目录 表的基本操作介绍retrieveselect列建表基本测试 where子句建表基本测试 表的基本操作介绍 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) retrieve select列 建表 基本测试 插入数据 全列查询 …

网络服务商大连关键词优化报价

一.题目及剖析 https://leetcode.cn/problems/missing-number-lcci/description/ 方法有很多,这里将两种时间复杂度为O(N)的方法 二.思路引入 第一种方法 先将0-n的总和求出来,在求出数组的总和,在做差就能得到消失的数字,不过要注意的是数据有可能溢出,这个方法很简单就不再…

通化网站建设公司wordpress旅游

计算机系统概述 1.操作系统概念 管理系统软/硬件资源,为程序提供服务 2.发展与分类 3.操作系统的运行环境 运行机制 指令:(二进制机器指令),CPU能识别,执行的最基本命令 应用程序:程序员写…

织梦做的网站首页排版错误网站建设教程 pdf

摘要 APP加固是保护APP代码逻辑的重要手段,通过隐藏、混淆、加密等操作提高软件的逆向成本,降低被破解的几率,保障开发者和用户利益。本文将介绍APP加固常见失败原因及解决方法,以及处理安装出现问题的情况和资源文件加固策略选择…

如何看网站的ftp网站建设的特色

此模块将网络通信模块和业务处理模块进行了合并 网络通信通过httplib库搭建完成业务处理: 文件上传请求:备份客户端上传的文件,响应上传成功客户端列表请求:客户端请求备份文件的请求页面,服务器响应文件下载请求&…

wordpress高度还原设计稿百度优化 几个网站内容一样

如今,越来越多的企业会考虑建立一个企业官方网站来展示企业形象,或者建立一个电子商务网站平台来拓展业务渠道,或者建立一个企业内部网来协助企业进行网上工作。 网站建设的类型有很多种,不同类型的网站成本差异很大。 因此&#…

制作网页的网站推荐wordpress rss采集

背景 实际业务中经常需要展示某个网站, 并且希望在展示的时候单击网站可直接访问, 本节演示在表格中如何添加超链接支持. 需求 假设我需要渲染一个Study类, 它只有三个属性id,name和website, 其中id只支持展示, name只支持编辑, 而website只支持单击时跳转到相应的网站, 效果…

做服装设计兼职的网站湖南做旅游网站哪家最好

目录 一.什么是Qt元对象系统? 二.编译时Qt Creator偷摸做了哪些事情? 1.uic 2.rcc 3.moc 一.什么是Qt元对象系统? Qt中的元对象系统(Meta-Object System)提供了对象间通信的信号和槽机制、运行时类型信息和动态属…

点击图片跳转到网站怎么做链接网页源码下载

文章目录 1、交叉类型2、联合类型3、类型保护3.1 用户自定义的类型保护3.2 typeof 类型保护3.3 instanceof类型保护 4、类型别名4.1 定义- 接口 vs. 类型别名 5、可辨识联合6、索引类型6.1 类型操作符:- 索引类型查询操作符:keyof T- 索引访问操作符&…

马化腾做的电商网站建设部注册师网站

题目 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s "Hello World" 输出&#…

潍坊手机网站建设南京网络优化培训

scratch像素画板 第十四届青少年蓝桥杯scratch编程省赛真题 一、题目要求 编程实现 1.点击绿旗,角色、背景如图所示(三种颜色调色盘、清除图标及方格角色请自行创建,点击绿旗后立刻呈现下图效果); 2.用鼠标点击红色调色盘,红色调色盘变为选中状态(如下图所示),此时鼠…

这么做3d网站做网站维护工商经营范围是什么

Amazon Simple Email Service (SES) 是一项强大的电子邮件发送服务,适用于数字营销、应用程序通知以及事务性邮件。在这个实战指南中,我们将演示如何设置 AWS SES 并通过几个示例展示其用法。 设置 AWS SES 1. 创建 AWS 账户 首先,您需要创…

宜春网站建设推广深圳营销型企业网站

车载诊断协议DoIP系列 —— 传输层控制协议(TCP)&用户数据报协议(UDP) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎…

网站规划的基本原则华梦服饰网站建设中

1 什么是迭代器,生成器,装饰器 2 django的信号用过吗?如何用,干过什么 3 什么是深拷贝,什么是浅拷贝,如何使用 3.1 浅拷贝 3.2 深拷贝 3.3 扩展(slice操作符和list构造函数) 1 什么是迭代器,生成…

网站开发准备工作网站开发薪水

2021年12月10日,由广东省游戏产业协会、广东省虚拟现实产业技术创新联盟、深圳市科学技术协会、深圳市互联网文化市场协会指导,陀螺科技主办,深圳市科技开发交流中心、恒悦创客魔方协办,行业头部媒体游戏陀螺、VR陀螺、陀螺电竞、…

cms网站建设的实训总结电子商务网站制作公司

文章目录 在Unity中,方括号 [ ] 通常用于表示属性、特性(Attributes)或者元数据(Metadata)。这些标记提供了附加信息,可以用于修改类、方法、字段等的行为或者在编辑器中进行设置。 以下是一些常见的用法&…