Blazor服务器:重定向到登录并方便注册页面



我有一个Blazor Server web应用程序,除登录页面外,所有页面都需要进行身份验证。无论何时未通过身份验证,都应将您重定向到登录页面。

我已经用我的App.razor:实现了这一点

<CascadingAuthenticationState>
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<AuthorizeView>
<Authorized>
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
</Authorized>
<NotAuthorized>
<LoginPage />
</NotAuthorized>
</AuthorizeView>
</Found>
<NotFound>
<h1> 404 - Not Found</h1>
</NotFound>
</Router>
</CascadingAuthenticationState>

这正是我想要的,每当你没有通过身份验证,导航到一个随机页面时,它就会重定向到LoginPage。

我面临的问题是,我想促进一个注册页面,在那里有人可以创建一个帐户。但是,使用当前的应用程序。Razor,如果你导航到localhost/register,你会被重定向到登录页面(当然(。

有没有一种方法可以在应用程序中(优雅地(解决这个问题。剃须刀我想避免在每个页面上添加相同的逻辑以重定向到登录页面,以防您未通过身份验证。

你应该这样做

<AuthorizeRouteView RouteData="@routeData" 
DefaultLayout="@typeof(MainLayout)">
<NotAuthorized>
@if (!context.User.Identity.IsAuthenticated)
{
<RedirectToLogin /> 
}
else
{
<p>You are not authorized to access this resource.</p>
}
</NotAuthorized>
</AuthorizeRouteView>

这是你的:

<NotAuthorized>
<LoginPage />
</NotAuthorized>

伪代码:如果用户未经授权,请将其重定向到登录页面。

这当然是错误的。用户可能已经登录,但尚未获得授权。明白了吗?

您可以将authorize属性放在_Host.cshtml文件中,在这种情况下,即使在Blazor应用程序呈现之前,用户也会重定向到登录页面。如果愿意,可以将authorize属性放置在App.razor组件中,或者放置在_Imports中。剃刀锉等。为了允许匿名访问您的注册页面和/或其他页面,只需在页面顶部注释:@attribute [AllowAnonymous]

相关内容

  • 没有找到相关文章

最新更新