天天看点

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

作者:AlexChow

目录

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

本节源码

https://gitee.com/densen2014/Blazor100/tree/Blazor-教程15-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>>();
...
           
Blazor入门100天 : 身份验证和授权 (4) - 自定义字段

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

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

记得要添加 @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
...
           

运行工程

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

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

dotnet ef database update
           

本节源码

https://gitee.com/densen2014/Blazor100/tree/Blazor-教程15-4/b15blazorIDS2

源代码

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

关联项目

FreeSql

BA & Blazor

知识共享许可协议

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

转载声明

本文来自博客园,作者:周创琳 AlexChow,转载请注明原文链接:https://www.cnblogs.com/densen2014/p/17083937.html

AlexChow

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

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

分类: Blazor, BootstrapBlazor

继续阅读