Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1628
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2022-08-22 21:57
个人简介

杏彩代理平台《叩1530667》████████████杏彩娱乐总代理《叩1530667》██████████████████████若爱而乘疾弛而列车,苟其爱之,无论尔多晚,无不惬意。 盖列车以为汝,乐用之,愿回转、拐曲、回顾或前冲

文章分类
文章存档

2022年(1)

我的朋友
最近访客

分类: 服务器与存储

2022-12-03 22:53:46

Blazor Server完美实现Cookie Authorization and Authentication

Blazor server-side application用Microsoft.AspNetCore.Identity.EntityFrameworkCore实现Authorization 和 Authentication 完整教程。

本方案只适用于Blazor Server-Size Application

完整项目源代码,参考: 

需要引用的类库如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 Include="Microsoft.AspNetCore.Authentication.Google" Version="7.0.0" />
 Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="7.0.0" />
 Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.0" />
 Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.0" />
 Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.0">
  all
  runtime; build; native; contentfiles; analyzers; buildtransitive
 Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.0" />
 Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.0" />
 Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.0">
  all
  runtime; build; native; contentfiles; analyzers; buildtransitive
 Include="Duende.IdentityServer" Version="6.2.0" />
 Include="Duende.IdentityServer.AspNetIdentity" Version="6.2.0" />
 Include="Duende.IdentityServer.EntityFramework" Version="6.2.0" />
 Include="Duende.IdentityServer.EntityFramework.Storage" Version="6.2.0" />
 Include="Duende.IdentityServer.Storage" Version="6.2.0" />


这里的实现方式和Asp.net core 3.0,5.0,6.0, 7.0 几乎一样的配置,但又也有一些特殊之处。下面我分享一下的代码。

从上面引用的类库发现我并使用的是Microsoft.AspNetCore.Identity.EntityFrameworkCore + Duende.IdentityServer 都已经升级到{BANNED}最佳新版本。

配置 Microsoft.AspNetCore.Identity.EntityFrameworkCore 

用于生成需要后台表

 

 

 这里和微软官方的文档略有不同我使用的AddIdentity方法。

添加 Authorization and Authentication 配置

 

 

 这类servicescollection配置和asp.net core cookie认证是一直,只是这里不需要配置Login,Logout路径

开发一个登录Blazor Component(Page)

 

 重点这里需要生成一个Token,而不是直接传用户名+密码,因为安全 不能明文传输密码。这里我们需要调用auth/login?token=.... 实现登录

AuthController 用户登录并获取授权

 

 这里的写法和asp.net core登录一样都使用SignInManager 登录成功后和asp.net core应用一样保存于账号相关的所有授权比如Roles和Claims 

如何需要自定义添加自定义的内容比如下面的TenantId TenantName ,ApplicationClaimsIdentityFactory就是用于添加需要内容。

 

 获取当前登录的账号信息

 

 之前Blazor Server-Side application 是不支持 IHttpContextAccessor获取账号信息,现在竟然可以了。

Blazor server Component调用UserManager需要注意的地方

 

Component需要继承 添加 @inherits OwningComponentBase

 

 需要通过ScopedServices.GetRequiredService>(); 创建才安全

希望对学习Blazor的同学有帮助。



阅读(828) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~