如何更改刷新 Blazor PWA 应用程序时出现的“正在授权...”消息?

Posted

技术标签:

【中文标题】如何更改刷新 Blazor PWA 应用程序时出现的“正在授权...”消息?【英文标题】:How do I change the "Authorising..." message that appears when a Blazor PWA application is being refreshed? 【发布时间】:2021-05-24 09:47:16 【问题描述】:

当使用浏览器刷新刷新 ASP 网络托管的 BLAZOR 渐进式 Web 应用程序时,PWA 应用程序执行身份验证往返。在此时间跨度内,主要内容 div 显示文本:“授权...”。这个消息是从哪里来的?我的目标是与此消息一起显示微调框,以便用户体验动画。以下是我所知道的:

最初的“正在加载...”消息显示在 wwwroot 的索引页面中。 对于每个AutherizeView,授权部分可用于显示自定义消息。

但我无法找到默认“授权...”消息的来源。

【问题讨论】:

【参考方案1】:

有两个地方需要你的意图。

首先在您的App.razor 中。 AuthorizeRouteView 有一个名为Authorizing 的属性,您可以在其中添加要在授权期间显示的任何RenderFragement。 Here 是设置Authorizing... 的行。

<CascadingAuthenticationState>
    <Router AppAssembly="@typeof(Program).Assembly" PreferExactMatches="@true">
        <Found Context="routeData">
            <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
                <Authorizing>
                    <span>Your spinner goes here</span>
                </Authorizing>
                <NotAuthorized>
                    @if (!context.User.Identity.IsAuthenticated)
                    
                        <RedirectToLogin />
                    
                    else
                    
                        <p>You are not authorized to access this resource.</p>
                    
                </NotAuthorized>
            </AuthorizeRouteView>
        </Found>
        <NotFound>
            <LayoutView Layout="@typeof(MainLayout)">
                <p>Sorry, there's nothing at this address.</p>
            </LayoutView>
        </NotFound>
    </Router>
</CascadingAuthenticationState>

如果您使用默认模板创建了应用程序,您应该会看到 AuthenticationPage。此页面有路由@page "/authentication/action"

这个页面内容看起来像

@page "/authentication/action"
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
<RemoteAuthenticatorView Action="@Action" />

@code
    [Parameter] public string Action  get; set; 

您可以通过添加相应的RenderFragments来更改整个模板,可以找到here

这是一个示例,其中每个片段都有一个非默认值

@page "/authentication/action"
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
<RemoteAuthenticatorView Action="@Action">
    <LoggingIn>
        <span>LoggingIn</span>
    </LoggingIn>
    <Registering>
        <span>Registering</span>
    </Registering>
    <Registering>
        <span>LoggingIn</span>
    </Registering>
    <UserProfile>
        <span>UserProfile is loaded....</span>
    </UserProfile>
    <CompletingLoggingIn>
        <span>CompletingLoggingIn</span>
    </CompletingLoggingIn>
    <LogInFailed>
        <span>Login failed. Reason: @context</span>
    </LogInFailed>
    <LogOut>
        <span>Logout from the application</span>
    </LogOut>
    <LogOut>
        <span>CompletingLogOut</span>
    </LogOut>
    <LogOutFailed>
        <span>Logout failed. Reason: @context</span>
    </LogOutFailed>
    <LogOut>
        <span>LogOutSucceeded</span>
    </LogOut>
</RemoteAuthenticatorView>

@code
    [Parameter] public string Action  get; set; 

【讨论】:

Authorizing of AuthorizeRouteView in App.razor 工作得很好。谢谢@just-the-benno 这是我的荣幸 我可以删除授权页面吗?因为当我在不需要授权的登录页面时它会飞溅

以上是关于如何更改刷新 Blazor PWA 应用程序时出现的“正在授权...”消息?的主要内容,如果未能解决你的问题,请参考以下文章

CSS 更改出现在检查器中,但不会在实际 CSS 文件中应用更改并刷新时出现

尝试获取资源时出现 Blazor WASM NetworkError。 “CORS 缺少允许来源”

Blazor PWA 适用于桌面浏览器,但不适用于智能手机

在 Blazor PWA VS-2019 解决方案中显示验证错误的问题

如何在 Blazor 中编写自定义值更改事件处理程序?

当用户在 Blazor Webassembly 身份验证和授权中具有多个角色时出现问题?