Blazor Web Assembly - 体验一下Authentication State从Server共享给Client

1.简单介绍

.NET 9 中Blazor Web Assembly新增加了一个特性就是Server端的认证状态可以持久化并共享给Client端。这边尝试一下在Static SSR Blazor页面中进行登录(SSR是Server side Rendering的缩写),然后应用.NET 9中的新特性,对AuthenticationState进行持久化并共享到Client端Blazor页面(渲染模式为InteractiveWebAssembly)。

2.具体说明

2.1 添加Login页面

由于Blazor Login页面采用的是Static SSR渲染模式,因此使用的是Asp.Net Core表单进行登录

表单提交后,使用HttpContext.SignInAsync方法把Authentication状态保存到cookie中

2.2 注册Middleware

在Program中,添加Authentication相关的中间件

2.3 添加Blazor页面

  1. 添加一个渲染模式为InteractiveServer的Blazor页面
  1. 同时添加一个渲染模式为InteractiveWebAssembly的页面
  1. 再添加一个Static SSR的Blazor页面

2.4 运行一下

  1. 首先进入了登录界面,如下图
  1. 输入用户名和密码,跳转到Home页面
  1. 点击渲染模式为InteractiveWebAssembly的页面(左侧菜单 WasmAuthCheck)

可以看出页面中有报错,同时用户的名字和IsAuthenticated状态信息没有显示出来

浏览器控制台的错误也是因为在Client端OnInitializedAsync方法无法获取AuthenticationState而产生的。

  1. 点击渲染模式为InteractiveServer的页面(左侧菜单 ServerPageCheck)

发现用户的认证信息显示正常

  1. 点击渲染模式为Static SSR的页面(左侧菜单 StaticSSRPageCheck)

发现用户的认证信息显示正常

2.5 添加 .NET 9 新特性

在Server端,添加如下代码

复制代码
.AddAuthenticationStateSerialization(options => options.SerializeAllClaims = true);

在Client端,添加如下代码

复制代码
builder.Services.AddAuthorizationCore();
builder.Services.AddCascadingAuthenticationState();
builder.Services.AddAuthenticationStateDeserialization();

2.6 再次运行一下

输入用户名和密码登录系统,发现渲染模式为InteractiveWebAssembly的页面中,用户的认证信息也显示正常了

3.总结

本文简单体验了一下Authentication State从Server端持久化并共享到客户端的特性。通过这个特性,Client端的页面可以复用Server端的身份认证信息了,下面是序列化Authentication State的方法,

AddAuthenticationStateSerialization

AddAuthenticationStateDeserialization

本文如果哪里有错误,麻烦告之,谢谢谢谢!

相关推荐
wdfk_prog11 分钟前
Wi-Fi Direct 源码分析(09):从 P2P_CONNECT 到 GO Negotiation 完成
运维·服务器·ubuntu·golang·asp.net·p2p·wifi-direct
海宇大数据36 分钟前
零信任架构实战:基于海宇身份证OCR构建自动化跨境清关核验网关
人工智能·架构·c#·自动化
LateFrames4 小时前
WPF 升级选型:用 .NET 8 还是 .NET 10
.net·wpf·.net8·.net10
HwJack2014 小时前
【共创稿事节】HarmonyOS 7空间排布原则:视锥、舒适区与可达性
microsoft·华为·harmonyos
samble14 小时前
从零搭建灌装监控系统(十):生产追溯,条码触发自动记录
c#·wpf·mvvm·modbus·工业控制
czhc114007566319 小时前
退出防呆:用“总闸“收口所有退出入口,以及三个并发语法坑
开发语言·c#
淡海水21 小时前
02-01-原理篇-Mark-Sweep与变种算法
算法·unity·c#·游戏引擎·.net·gc
狗凯之家源码网1 天前
AI 导航网站模板一站式工具合集源码深度评测
microsoft·ai导航系统
释厄6231 天前
物理发展史·量子力学=节点2·牛顿力学=节点3·宇宙的语言算法AI
人工智能·算法·microsoft
海盗12341 天前
微软技术日报 2026-10-01:VS Code 1.140 让模型互相挑错,EWS 今天起关停
人工智能·驱动开发·microsoft·机器人·aigc