Blazor web app 添加 AuthenticationStateProvider 后,按下 F5 刷新,又重新认证的问题

929Free 641 信誉分
2025-03-22T05:28:29.0933333+00:00

工程师,您好,我在 Blazor web app 主程序里 加入了 AuthenticationStateProvider 认证 登录 + 登出 功能, 主程序

Routes.razor 文件:

<Router
    AppAssembly="typeof(Program).Assembly"
>
    <Found Context="routeData">
        <AuthorizeRouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)" />
        <FocusOnNavigate RouteData="routeData" Selector="h1" />
    </Found>
</Router>

MainLayout.razor 文件:

@inherits LayoutComponentBase

<AuthorizeView>
    <NotAuthorized>
        @if (!context.User.Identity!.IsAuthenticated)
        {
            <Login />
        }
        else
        {
            <p>你没有权限访问资源.</p>
        }
    </NotAuthorized>
    <Authorized>
          @Body
    </Authorized>
</AuthorizeView>

我首先通过 login 页面 进行登录,随后跳转到 根页面 "/" , 此时我已经实现了登录+登出的功能,可是我在 根页面 "/" 按下 F5 键盘刷新页面, 又自动跳转到 login 页面了。请问下 是我少做了哪些功能吗?AuthenticationStateProvider 默认登录时间是多久额?如果我想设定 5分钟内 保持登录效果,超过5分钟刷新或者跳转其他页面,才需要重新登录的话,我该如何设置呢?麻烦教一下,谢谢了

Blazor
Blazor
一个免费的开源 Web 框架,使开发人员能够使用 Microsoft 开发的 C# 和 HTML 创建 Web 应用。
35 个问题
{count} 票

接受的答案
  1. 匿名
    2025-03-25T02:23:44.9633333+00:00

    Hi @929Free,

    通过您之前发布的帖子,我们大概清楚您使用的是.NET9 服务器交互类型的Blazor Web App项目。 但是就AuthenticationStateProvider相关的刷新后验证失败的问题,我们还是缺少很多的详细信息的,如果是如何进行登录的,使用的什么身份验证策略。

    但是没有关系,这是一个比较经典的问题。常见的原因是我们不能在服务器交互式渲染模式中使用 SignInAsync ,因为 HttpContext 将为Null。微软也建议不要使用 HttpContext。

    具体的详细操作步骤,你可以参考此官方的帖子链接:How to maintain Authentication State with Blazor 8 Server Interactive? 在我们的工程师与帖子发布者的聊天后,最终找到了详细的解决方案,我们已经测试过有效,你可以参照并进行解决。

    如果其身份验证方式与您的不同,或者您用了其他的身份验证方式,我们非常欢迎您创建全新的示例项目并可以复现问题。 我将会为您进行调试,以查看context.User.Identity!.IsAuthenticated 中到底哪一步丢失了身份信息。


    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他问题,请点击“评论”。

    注意:如果您想接收此线程的相关电子邮件通知,请按照我们的 文档 中的步骤启用电子邮件通知。

    Best Regards

    Jason


0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。