在具有交互式渲染的 Blazor Web 应用程序中访问自定义 AuthenticationStateProvider 内请求的 HttpContext 是否安全?

问题描述 投票:0回答:1

虽然有很多与 Blazor 和身份验证相关的问题,但我没有看到这个特定问题,所以我想我会在这里问它。

我是 blazor 的新手,正在致力于为将以交互模式呈现的应用程序实现基于 cookie 的自定义身份验证方案。我正在使用新的 .Net 8 Blazor Web 应用程序模板。在阅读文档时,我发现在这个新模板中以交互模式渲染时不鼓励使用 HttpContext,因为当您深入了解组件时,没有合适的 HttpContext。

在我的自定义方案中,我有一个 cookie,它有一个 id,可用于在自定义 AuthenticationStateProvider 中获取声明原则,并且我在想,当调用 StateProvider 的 GetAuthenticationStateAsync() 方法时,我可以提取 cookie 并获取值从它。我希望能够将 HttpContext 注入到我的 AuthenticationStateProvider 中,然后我可以通过这种方式获取 cookie。我认为这应该没问题,因为 AuthenticationStateProvider 是在请求到达 blazor 之前创建的(身份验证现在由来自 AspNet.Core 的中间件处理),因此它可以从 AspNet.Core 访问实际的 HttpContext。 因此它会有上下文,当 blazor 中的 Router 调用 GetAuthenticationStateAsync() 时,它应该能够从内部存储的上下文中提取 cookie,从而避开整个 Blazor-Has-No-Context 问题。

我对这里情况的思考和理解是否正确?新模板的身份验证文档有点令人困惑,并且在这一点上不清楚。

blazor httpcontext
1个回答
0
投票

实际上你有两种方法来获取 cookie 值。一种是SSR时使用HttpContext。另一种是使用 Javascript Interop 从浏览器存储中读取。

© www.soinside.com 2019 - 2024. All rights reserved.