Blazor入门100天 : 身份验证和授权 (4) - 自定义字段

2023-05-16

目录

  1. 建立默认带身份验证 Blazor 程序
  2. 角色/组件/特性/过程逻辑
  3. DB 改 Sqlite
  4. 将自定义字段添加到用户表
  5. 脚手架拉取IDS文件,本地化资源
  6. freesql 生成实体类,freesql 管理ids数据表
  7. 初始化 Roles,freesql 外键 => 导航属性
  8. 完善 freesql 和 bb 特性

本节源码

https://github.com/densen2014/Blazor100/tree/Blazor-%E6%95%99%E7%A8%8B15-4/b16blazorIDS2

注:源码工程目录改为b16blazorIDS2,区分之前的教程例子

给默认 IdentityUser 类添加新字段

新建 Model 文件夹, 新建 WebAppIdentityUser.cs 文件

继承 IdentityUser 类,并添加一些附加字段.

using Microsoft.AspNetCore.Identity;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
 
namespace b16blazorIDS2.Models
{
    public class WebAppIdentityUser : IdentityUser
    {


        /// <summary>
        /// Full name
        /// </summary>
        [PersonalData]
        public string? Name { get; set; }

        /// <summary>
        /// Birth Date
        /// </summary>
        [PersonalData]
        public DateTime? DOB { get; set; }

        [Display(Name = "识别码")]
        public string? UUID { get; set; }

        [Display(Name = "外联")]
        public string? provider { get; set; }

        [Display(Name = "税号")]
        [PersonalData]
        public string? TaxNumber { get; set; }

        [Display(Name = "街道地址")]
        [PersonalData]
        public string? Street { get; set; }

        [Display(Name = "邮政编码")]
        [PersonalData]
        public string? Zip { get; set; }

        [Display(Name = "区县")]
        [PersonalData]
        public string? County { get; set; }

        [Display(Name = "城市")]
        [PersonalData]
        public string? City { get; set; }

        [Display(Name = "省份")]
        [PersonalData]
        public string? Province { get; set; }

        [Display(Name = "国家")]
        [PersonalData]
        public string? Country { get; set; }

        [Display(Name = "类型")]
        [PersonalData]
        public string? UserRole { get; set; }
    }
}

更改上下文

编辑 Data\ApplicationDbContext.cs

using b16blazorIDS2.Models;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace b16blazorIDS2.Data
{
    public class ApplicationDbContext : IdentityDbContext<WebAppIdentityUser>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }
    }
}

更改 Identity 依赖为新的类

编辑Program.cs

//注入Identity依赖   WebAppIdentityUser => WebAppIdentityUser
builder.Services.AddDefaultIdentity<WebAppIdentityUser>(o =>
...
builder.Services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<WebAppIdentityUser>>();
...

把项目其他的 Identity 也替换为新的 WebAppIdentityUser 类

记得要添加 @using b16blazorIDS2.Models

_LoginPartial.cshtml文件

@using Microsoft.AspNetCore.Identity
@using b16blazorIDS2.Models

@inject SignInManager<WebAppIdentityUser> SignInManager
@inject UserManager<WebAppIdentityUser> UserManager
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
...

LogOut.cshtml文件

@using b16blazorIDS2.Models

@attribute [IgnoreAntiforgeryToken]
@inject SignInManager<WebAppIdentityUser> SignInManager
...

运行工程

如果出错,进入Packge Manager Console中输入

dotnet ef database update

本节源码

https://github.com/densen2014/Blazor100/tree/Blazor-%E6%95%99%E7%A8%8B15-4/b15blazorIDS2

源代码

https://github.com/densen2014/Blazor100

https://gitee.com/densen2014/Blazor100 (镜像/非最新版)—

关联项目

FreeSql QQ群:4336577

BA & Blazor QQ群:795206915

Ma

ui Blazor 中文社区 QQ群:645660665

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名AlexChow,不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系 。

转载声明

本文来自博客园,作者:周创琳 AlexChow,转载请注明原文链接.

AlexChow

今日头条 | 博客园 | 知乎 | Gitee | GitHub

image

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Blazor入门100天 : 身份验证和授权 (4) - 自定义字段 的相关文章

  • Blazor JsInterop:调用 JS 时 Div 不可用

    该问题涉及客户端 Blazor 组件 该组件包含一个被组件变量隐藏的 div bool 打开 我需要组件在组件代码文件中显示 div 之后运行一些 Javascript 以便调整它在屏幕上的位置 下面的代码应该更好地解释这一点 组件 raz
  • Blazor 读取目录

    如何将内容目录读入 Blazor I tried Path Combine Directory GetCurrentDirectory posts 但这会引发错误 Uncaught in promise Error System IO Di
  • Blazor 本地化

    我尝试在 Blazor 应用程序中实现本地化 但在尝试通过视图中的键获取资源值时遇到一些问题 我怎样才能做到这一点 到目前为止 这是我的代码 启动 cs public void ConfigureServices IServiceColle
  • Blazor - 动态改变角色

    我有一个 blazor 应用程序 在页面中我使用以下代码根据当前用户角色显示一些部分
  • 如何在 Blazor 中订阅 onscroll 事件?

    我试图对 Blazor 中的 onscroll 事件做出反应 以便在用户向下滚动网页时为图像设置动画 类似于此网站上的品牌徽标 https lebenswelten stgabriel at https lebenswelten stgab
  • 如何访问 Blazor WebAssembly 中的应用程序设置

    我当前正在尝试将 api url 保存在应用程序设置中 但是 configuration Properties似乎是空的 我不确定如何获取该设置 在程序 cs中 public static async Task Main string ar
  • Blazor 客户端 - 错误 NETSDK1082:“浏览器-wasm”

    我创建了一个简单的 blazor wa 项目 并选择了托管选项 在项目的客户端 它自动附带
  • 在 Blazor 组件中使用带有继承的泛型类型

    我正在尝试在 Blazor 中创建一个 通用列表 组件 并希望该组件能够接受从基类派生的任何对象 我的代码目前如下 基类 public class Model PK for the record Key public int Id get
  • Blazor - Web 程序集加载时间

    我开发了 Blazor Server 服务器应用程序 客户显然不喜欢 无法重新连接到服务器 重新加载页面以恢复功能 的消息 这就是我尝试探索迁移到 Web Assembly 的原因 我正在努力 如何加快 Web 程序集加载时间 因为主页无法
  • 自定义“AuthenticationStateProvider”身份验证失败

    我创建了一个自定义ApiAuthenticationStateProvider返回后AuthenticationState仍在说明 info Microsoft AspNetCore Authorization DefaultAuthori
  • 在 Blazor 中增加文本区域

    我需要一个随着行数增加而增长的文本区域 一旦行被删除 TextArea 就会再次缩小 在最好的情况下具有最大高度 它如何与 Javascript 一起工作我已经可以在这里阅读 根据内容长度调整文本区域大小 https stackoverfl
  • 在服务器端 Blazor 项目中构建身份时出错

    我正在开发一个服务器端 Blazor 应用程序 该应用程序是使用为身份验证选择的 个人用户帐户 选项创建的 我现在想要自定义登录页面 但是当我选择通过脚手架添加身份页面时 我收到以下错误 并且我不确定从哪里开始进行故障排除 无法在内存中编译
  • HTTP 错误 500.31 - ANCM 无法在 IIS 中找到本机依赖项

    我尝试运行一个Blazor应用 Web Server runs NET Core 3 0 Web Client runs NET Standard 2 0 Web Shared runs NET Standard 2 0 发布并上传应用程序
  • 使用 Blazor 和 C# 刷新 html 表数据

    我有一种情况 我有一个 for 循环 它从我的数据模型创建我的 html 表 该数据模型从 SQL Server Express 获取数据 我想知道是否可以创建一个自动刷新方法 其中表数据仅刷新而不刷新整个页面 如果没有 那么也许 OnCl
  • BlazorWebView 内的 .NET MAUI Xaml

    我正在完全使用 Blazor 构建我的应用程序 一切都发生在我的 BlazorWebView 内 是否可以使用类似的东西RefreshView在 razor 文件中 我知道我可以实例化一个ContentView从代码后面但是我可以将其实现到
  • 状态存储在 Fluxor 中的哪里?

    我是与状态管理人员合作的新手 目前 我正在开发 blazor 应用程序 我偶然发现了 fluxor 框架 它允许通过 Flux 模式进行状态管理 Fluxor 对我来说工作得很好 但是我似乎无法弄清楚页面状态的实际存储位置 它是在缓存 数据
  • 在使用 Azure Active Directory 的 WASM Blazor 中,如何在开发过程中绕过身份验证

    Microsoft 在其演练中很好地介绍了根据 Azure Active Directory 对 WASM Blazor 进行身份验证 他们没有涵盖的是之后的开发工作流程 作为一个已编译的应用程序 对 UI 的每次更改都是一个痛苦的停止 重
  • 可以在 Blazor 布局中使用 ViewComponent 吗?

    刚刚第一次尝试 Blazor 使用默认的 Blazor 模板 我添加了一个ViewComponent致电MainLayout cshtml await Component InvokeAsync HeaderComponent Intell
  • 如何使用 Blazor 在 ASP.NET CORE 中更新数据库后刷新网页

    我正在制作一个小型房间预订网络应用程序 我希望在给定的时间间隔内刷新网页 即给定的一分钟或对数据库进行更改时 我发现StateHasChanged 但我真的不知道如何实现它 这里是新手一克诺比 我尝试将其放在将约会添加到日程表的函数中 va
  • 如何从除自身之外的其他(blazor)库引用js/css文件?

    我如何引用 使用位于引用的 blazor 项目中的 css cs 文件 该文件与 host cshtml 中的当前项目不同 我的意思是

随机推荐

  • ArrayList和JSONArray边遍历边删除到底该怎么做

    话题看起来有点老生了 xff0c 但是加入JSONArray还是有很多新意 ArrayList 方式1 xff1a 索引遍历 List lt Integer gt list 61 new ArrayList lt gt list add 1
  • git 添加源地址和查看源地址

    git init 添加本地文件关联 git add commit 提交 git commit m 34 first commit 34 关联仓库 git remote add origin http git sfc com yuxang w
  • Python爬取淘宝商品数据,价值千元的爬虫外包项目

    前言 本文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 如有问题请及时联系我们以作处理 PS xff1a 如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 完整代码可以点击下方链接获取 python免费学习资
  • AndroidStudio安装kotlin插件

    转载请注明出处 xff1a http blog csdn net feibendexiaoma article details 72625846 前言 2017 Google I O大会宣布将Kotlin语言作为安卓开发的一级编程语言 xf
  • Ubuntu20.04/Ubuntu22.04 配置VScode+Opencv+cmake(C++)

    Ubuntu20 04 Ubuntu22 04 配置VScode 43 Opencv 43 cmake xff08 C 43 43 xff09 下面介绍Ubuntu20 04下安装opencv xff0c 当然Ubuntu22 04也适用
  • Ubuntu-解决包依赖关系

    Ubuntu 解决包依赖关系的办法 安装软件包的时候 xff0c 有时会遇到类似下图的依赖问题 xff0c 无法正常安装 xff0c 下面提供三种方法解决依赖问题 1 可以尝试用下面方法处理依赖问题 xff0c 紧跟前一条安装命令后面输入下
  • Ubuntu 18.04系统进不去了,只有老内核的恢复模式还能进,请大家帮看一下

    Ubuntu 18 04 新内核和恢复模式进不去 xff0c 会报错 老内核也进不去 xff0c 只有老内核的恢复模式能进 xff0c 请大佬帮看一下 virtualbox里安装的是Ubuntu 18 04 1 LTS xff0c 打开id
  • Android Lottie动画的简单使用

    简介 在Android中做动画效果无非是以下几种方法 xff1a 普通动画帧动画属性动画通过改变LayoutParams布局参数来实现动画 现如今在Github上有一个比较火的动画库Lottie xff0c Github上关于Lottie库
  • java运行提示没有 org/slf4j/LoggerFactory 或者 log4j

    问题描述 Exception in thread main java lang NoClassDefFoundError org slf4j LoggerFactory 解决办法 在pom xml里面添加对应的配置 将jar包大包进去 lt
  • Blazor入门100天 : 身份验证和授权 (3) - DB改Sqlite

    目录 建立默认带身份验证 Blazor 程序角色 组件 特性 过程逻辑DB 改 Sqlite将自定义字段添加到用户表脚手架拉取IDS文件 本地化资源freesql 生成实体类 freesql 管理ids数据表初始化 Roles freesq
  • ExecutorService等待线程完成后优雅结束

    1 概述 该ExecutorService框架可以很容易地在处理多线程任务 我们将举例说明我们等待线程完成执行的一些场景 此外 xff0c 我们将展示如何正常关闭ExecutorService并等待已经运行的线程完成其执行 2 Execut
  • linux中出错处理

    linux中 xff0c 在支持多线程的环境中 xff0c 通常每个线程都有属于自己的errno变量 xff0c 是用来表示特定错误的常量 以下是 lt errno h gt 中定义的所有出错errno常量 define EPERM 1 O
  • linux-capabilities

    导航 返回顶部 1 man capabilities 1 1 Capabilities 功能1 2 全面实施功能需要 在内核2 6 24之前 xff0c 仅满足前两个要求 xff1b 从内核2 6 24开始 xff0c 所有这三个要求都得到
  • Arch-base-vs-iso

    Arch base vs iso Arch base vs iso 通常绝大多数的Linux分发版的iso镜像本身 iso文件都有约2Gb上下 都可以直接启动电脑并运行完整的Linux桌面系统 极少数的Linux发行版仅提供命令行界面 xf
  • Arch系统软件列表

    Arch系统软件列表 1 安装统计 2 安装列表 3 安装说明 4 作为依赖项的安装列表 5 更正 mangaro使用减的方式安装系统 开箱即用的豪华版本 xff0c 大部分人需要的都有了 xff0c 同样包括个别用户不需要的 xff0c
  • 服务器如何设置多用户登录?Windows服务器多界面设置方法

    当你在使用服务器时是否有遇到这样一个问题 xff1f 当你正在服务器里进行工作时 xff0c 突然一个小伙伴在没有告知你的情况下进入了服务器里 xff0c 导致你服务器失去连接了 xff0c 这种情况是非常常见的现象 主要原因就是因为服务器
  • 运算符:&和&&的区别

    amp 运算符有两种用法 xff1a 1 按位与 xff1b 2 逻辑与 amp amp 运算符是短路与运算 逻辑与跟短路与的差别是非常巨大的 xff0c 虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true amp
  • python删除txt文本文件第一行数据

    txt文本单次删除第一行 txt文本单次删除第一行 with open 39 test txt 39 mode 61 39 r 39 encoding 61 39 utf 8 39 as f line 61 f readlines 读取文件
  • Android WebView 网页使用本地字体

    要求在网页里面调用android app中assets目录下的某个字体文件 网页加载通常有两种方式 xff1a 1 loadDataWithBaseURL 2 loadUrl 一 loadDataWithBaseURL 网页中直接使用fil
  • Blazor入门100天 : 身份验证和授权 (4) - 自定义字段

    目录 建立默认带身份验证 Blazor 程序角色 组件 特性 过程逻辑DB 改 Sqlite将自定义字段添加到用户表脚手架拉取IDS文件 本地化资源freesql 生成实体类 freesql 管理ids数据表初始化 Roles freesq