如何在Auth0与Blazor WASM中指定登录成功后的返回URL?
解决Blazor Auth0登录成功后跳转至根路径的问题
我的Blazor应用运行在https://localhost:5001/app,但使用Auth0登录成功后总是跳转到https://localhost:5001,该如何修改?
我的服务注册代码:
builder.Services.AddOidcAuthentication(options => { builder.Configuration.Bind("Auth0", options.ProviderOptions); options.ProviderOptions.DefaultScopes.Add("email"); options.ProviderOptions.AdditionalProviderParameters.Add("audience", (string)builder.Configuration["Auth0:Audience"]!); options.ProviderOptions.AdditionalProviderParameters.Add("prompt", "select_account"); // options.ProviderOptions.AdditionalProviderParameters.Add("returnTo", "https://localhost:5001/app"); <== 无效 });
Authentication组件代码:
@page "/app/authentication/{action}" @using Microsoft.Extensions.Configuration @inject NavigationManager Nav <RemoteAuthenticatorView Action="@Action" OnLogInSucceeded=@loginHandler OnLogOutSucceeded=@logoutHandler> <LogOut> @{ var authority = (string)Configuration["Auth0:Authority"]!; var clientId = (string)Configuration["Auth0:ClientId"]!; var returnTo = "https://localhost:5001/app"; Nav.NavigateTo($"{authority}/v2/logout?client_id={clientId}&returnTo={returnTo}"); } </LogOut> </RemoteAuthenticatorView> @code { [Parameter] public string? Action { get; set; } private void loginHandler() {} private void logoutHandler() {} }
一、修复登录成功后的跳转路径
你尝试添加的returnTo参数是Auth0登出场景专用的,登录跳转需要配置Blazor OIDC的PostLoginRedirectUri:
修改服务注册代码,添加登录跳转路径配置:
builder.Services.AddOidcAuthentication(options => { builder.Configuration.Bind("Auth0", options.ProviderOptions); options.ProviderOptions.DefaultScopes.Add("email"); options.ProviderOptions.AdditionalProviderParameters.Add("audience", (string)builder.Configuration["Auth0:Audience"]!); options.ProviderOptions.AdditionalProviderParameters.Add("prompt", "select_account"); // 设置登录成功后跳转的目标路径 options.PostLoginRedirectUri = "/app"; });
关键配置:必须在Auth0后台的应用设置中,将https://localhost:5001/app/authentication/login-callback添加到「允许的回调URL」列表,否则Auth0会拒绝回调请求,导致跳转失败。
二、确保登出跳转正常(可选)
你的登出逻辑已经手动设置了returnTo,但同样需要在Auth0后台的「允许的登出URL」列表中添加https://localhost:5001/app,否则登出后跳转也会被拦截。
如果想简化登出逻辑,也可以通过配置PostLogoutRedirectUri统一管理:
// 在AddOidcAuthentication配置中添加 options.PostLogoutRedirectUri = "/app";
配置后可以移除RemoteAuthenticatorView中的自定义<LogOut>模板,直接使用组件默认的登出流程。
内容的提问来源于stack exchange,提问作者acmoune
相关产品推荐
相关产品推荐

