Blazor静态Web应用WASM调用内置OIDC认证时能否自定义回调URL?
Blazor静态Web应用WASM调用内置OIDC认证时能否自定义回调URL?
当然可以自定义回调URL啦!不过Azure Static Web Apps的内置认证系统有自己的参数规则,不是直接用callback,得用它支持的参数来实现,我给你捋清楚步骤:
直接在登录链接里指定跳转路径
内置认证端点支持post_login_redirect_uri参数,你只需要在调用登录接口时加上这个参数,就能指定登录完成后的跳转页面。比如你想让用户登录后跳转到/profile页面,链接就写成:/.auth/login/google?post_login_redirect_uri=/profile要是路径里有特殊字符(比如带参数的路由
/dashboard?tab=settings),记得用Uri.EscapeDataString转义一下,避免解析出错。在Blazor组件里可以这么写:@inject NavigationManager NavManager <button @onclick="LoginToProfile">用Google登录并进入个人中心</button> @code { private void LoginToProfile() { var targetPath = "/profile"; var encodedPath = Uri.EscapeDataString(targetPath); NavManager.NavigateTo($"/.auth/login/google?post_login_redirect_uri={encodedPath}", forceLoad: true); } }注意事项
- 这个参数的值必须是应用内的相对路径,不能填外部网站的URL,内置认证会拦截外部跳转请求;
- 确保你指定的目标路径在Blazor路由里已经配置了对应的组件,不然会跳转到404页面;
- 如果你的
staticwebapp.config.json里有自定义路由规则,要保证目标路径不会被其他路由规则意外重定向。
要是你需要更灵活的场景(比如用户原本访问某个受限页面,登录后自动跳回去),可以先把用户当前的路径存在localStorage里,然后登录时把这个路径作为post_login_redirect_uri的值传进去,登录完成后再根据需要做后续处理就行。
备注:内容来源于stack exchange,提问作者Vince
相关产品推荐
相关产品推荐

