Blazor入门100天 : 身份验证和授权

Posted AlexChow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Blazor入门100天 : 身份验证和授权相关的知识,希望对你有一定的参考价值。

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

目录

  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-3/b15blazorIDS

引用 EntityFrameworkCore.Sqlite 库

<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.2" />

配置文件加入Sqlite数据库链接

appsettings.json文件加入一行代码 "IdsSQliteConnection": "Data Source=ids.db;"

最终文件如下


  "ConnectionStrings": 
    "DefaultConnection": "Server=(localdb)\\\\mssqllocaldb;Database=aspnet-b15blazorIDS-f969184b-89a5-4ccf-beeb-911a756ae70a;Trusted_Connection=True;MultipleActiveResultSets=true",
    "IdsSQliteConnection": "Data Source=ids.db;"
  ,
  ...

使用EF Sqlite 配置

Program.cs文件

//EF SqlServer 配置

// Add services to the container.
//var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string \'DefaultConnection\' not found.");

//builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(connectionString));

//EF Sqlite 配置
builder.Services.AddDbContext<ApplicationDbContext>(o => o.UseSqlite(builder.Configuration.GetConnectionString("IdsSQliteConnection")));

重新生成 Migrations 脚本

之前版本是基于localdb,如果不换脚本会出现An error occurred applying migrations, try applying them from the command line错误

删除 Migrations 文件夹

可选: 保留sqlserver的Migrations脚本, 使用 从项目中排除 菜单

创建新迁移并为其生成 SQL 脚本

打开命令行, VS菜单栏=>工具=>Nuget包管理器=>程序包管理器控制台(Packge Manager Console), 执行以下命令

cd b15blazorIDS
dotnet ef migrations add idsSqlite
dotnet ef database update

完整流程

PM> cd b15blazorIDS
PM> dotnet ef migrations add idsSqlite
Build started...
Build succeeded.
Done. To undo this action, use \'ef migrations remove\'
PM> dotnet ef database update
Build started...
Build succeeded.
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (7ms) [Parameters=[], CommandType=\'Text\', CommandTimeout=\'30\']
      SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = \'__EFMigrationsHistory\' AND "type" = \'table\';
...
Done.
PM> 

重新生成的脚本

重新注册账号

如果运行后出错先跳过,直接导航到 https://localhost:7011/Identity/Account/Register 页面注册

Email Password Confirm Password
test@app.com 000000 000000
user@app.com 000000 000000

自动生成的数据库文件

本节源码

https://github.com/densen2014/Blazor100/tree/Blazor-教程15-3/b15blazorIDS

源代码

https://github.com/densen2014/Blazor100

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

以上是关于Blazor入门100天 : 身份验证和授权的主要内容,如果未能解决你的问题,请参考以下文章

Blazor WebAssembly身份认证与授权

Blazor WebAssembly身份认证与授权

Blazor WebAssembly身份认证与授权

Blazor WebAssembly .Net 5 Msal 身份验证中基于角色的授权

为 Blazor 授权动态添加策略声明

在 Blazor 中的视图之外访问经过身份验证的用户