您好 zengbang chen ,
看到您在Blazor Server中使用AntDesign登录时遇到了“Headers are read-only”这个错误,这确实是个让人困扰的问题。
这个错误的原因在于Blazor Server使用SignalR连接,当您的OnFinish方法执行时,初始的HTTP响应已经完成,此时尝试通过SignInAsync修改响应头来设置认证Cookie就会失败。
关于外部链接的说明: 这个Stack Overflow线程讨论了类似问题,但请注意我对其中内容的准确性和安全性不负责任,建议您谨慎参考:
推荐的解决方案是避免在Blazor组件中直接使用SignInAsync,而是采用:
- 使用
SignInManager.CheckPasswordSignInAsync()验证凭据 - 通过
AuthenticationStateProvider.SetAuthenticationStateAsync()更新认证状态 - 导航到目标页面
这个方法更符合Blazor的设计模式,应该能解决您遇到的问题。希望这些信息能帮到您,祝您顺利解决问题!