首页 > 其他分享 >Blazor入门100天 : 身份验证和授权 (4) - 自定义字段

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

时间:2023-02-02 02:11:38浏览次数:67  
标签:set string 自定义 get 身份验证 using 100 public Name

目录

  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-教程15-4/b15blazorIDS2

注:源码工程目录改为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-教程15-4/b15blazorIDS2

源代码

https://github.com/densen2014/Blazor100

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

标签:set,string,自定义,get,身份验证,using,100,public,Name
From: https://www.cnblogs.com/densen2014/p/17083937.html

相关文章

  • Blazor入门100天 : 身份验证和授权 (3) - DB改Sqlite
    目录建立默认带身份验证Blazor程序角色/组件/特性/过程逻辑DB改Sqlite将自定义字段添加到用户表脚手架拉取IDS文件,本地化资源freesql生成实体类,freesql管理......
  • VSCode 自定义代码片段
    Ctrl+Shift+P输入“代码片段:配置用户代码片段”:搜索你想要设置的语言代码片段,比如,我设置.vue文件的代码片段,选择vue.json:可以配置多个代码片段,一个片段通过一个pr......
  • Blazor入门100天 : 身份验证和授权 (1)
    目录建立默认带身份验证Blazor程序<AuthorizeView>组件,检查登录信息,级联参数获取身份验证状态数据,基于角色或基于策略的授权,可以在Razor组件中使用[Authorize]......
  • 易灵思Ti60F100 Flash处理方案
    转载自:Ti60F100Flash处理方案(qq.com)Ti60F100内部合封一片flash。在使用过程中有很多人遇到过这样或者那样的问题,比如RISCV不能读写flash,程序无法加载。在这里简单总......
  • flutter:安装使用自定义的字体(flutter 3.7.0)
    一,在flutter项目中引入字体文件在项目中创建存放字体的文件夹fonts,并把要使用到的字体文件复制到此文件夹下:如图:说明:刘宏缔的架构森林是一个专注架构的博客,地址:htt......
  • 使用validation自定义注解
    第一步在pom中引入<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version......
  • 【Java】自定义mybatis
    处理sqlin多条件搜索时单引号双引号问题StringBuilderpidNoZeroIds=newStringBuilder();IntegernumTmp=0;for(ShequLsDatingTypepidNoZero:pidNoZeroLis......
  • cra react18 ts 自定义hooks 单元测试
    首先创建cra项目如果报错说最新的create-react-app版本是5.x,而你的是4.x的话需要先卸载,再重新安装sudonpmuninstall-gcreate-react-appsudonpminst......
  • android自定义adapter之简单写法
      自定义adapter比较常用,很多人还在使用extendsBaseAdapter,然后写一大堆重复的代码,这里是提供一个封装的工具类,把重复的代码都省略掉,让adapter变的简洁一些。  给......
  • 自定义 CircleView - 继承 View 重写 onDraw
    一、画一个圆形的View如图,该圆形控件的宽为match_parent,高150dp,为了看到控件的整体宽高效果,为控件加了背景色即浅绿色:#3300aa00该页面的布局<?xmlversion="1.0"encodi......