我已将Blazor服务器与Azure B2C Cookie Auth连接。
services.AddAuthentication(AzureADB2CDefaults.CookieScheme)
.AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));
services.Configure<CookieAuthenticationOptions>(
AzureADB2CDefaults.CookieScheme, options =>
{
options.Cookie.Name = "MyCookieName";
});
我正在映射控制器,所以我有要命中的控制器端点:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
在我的Blazor服务器_Host
中,我只是使用内置的Authorize
attirbute:
@attribute [Microsoft.AspNetCore.Authorization.Authorize]
加载时,如果用户未经授权,它将重定向到B2C登录,而不会出现问题。然后我可以登录,它会引导我返回应用程序。
然而,我不知道登录后如何重定向到特定的控制器/操作端点,比如:/api/auth/mynewuser
。然后,该操作会进行一些验证并重定向回"/",允许用户继续使用Blazor应用程序。
考虑到我开箱即用的设置。。。如何做到这一点?
编辑
代码:
https://github.com/aherrick/BlazorServerB2C
目标是在每次登录/注册后达到此终点:
https://github.com/aherrick/BlazorServerB2C/blob/master/BlazorServerB2C/Controllers/AuthorizeController.cs
当您使用Azure AD B2C登录时,B2C服务会向"redirect_uri"发送一个令牌。您可以动态提及到特定控制器/操作端点的身份验证路由中使用的重定向URL。这有助于应用程序在身份验证成功时重定向到控制器。
此外,通过实现AuthorizeView组件或[授权]属性,可以轻松处理用户是否登录。
我查看了您的代码Authorizationcontroller和正在构建的newuser操作。如果你可以在剃须刀页面上触发,你可以使用以下内容:
@page "/YourPageName"
@inject NavigationManager NavigationManager
<h1>xxx</h1>
.
.
.
@code {
void MethodToTriggerUrl()
{
NavigationManager.NavigateTo("PageToRedirect");
}
}
此外,请参阅MS文档。