Identity Server 4退出登录自动跳转返回
Identity Server 4退出登录自动跳转返回
Identity Server系列目录
- Blazor Server访问Identity Server 4单点登录 - SunnyTrudeau - 博客园 (cnblogs.com)
- Blazor Server访问Identity Server 4单点登录2-集成Asp.Net角色 - SunnyTrudeau - 博客园 (cnblogs.com)
- Blazor Server访问Identity Server 4-手机验证码登录 - SunnyTrudeau - 博客园 (cnblogs.com)
- Blazor MAUI客户端访问Identity Server登录 - SunnyTrudeau - 博客园 (cnblogs.com)
- 在Identity Server 4项目集成Blazor组件 - SunnyTrudeau - 博客园 (cnblogs.com)
继续之前的项目,在Identity Server 4退出登录时,最后会停留在Identity Server 4项目,但是我想让它自动跳转回到我的调用网站。
这个是有办法解决的,改一下Identity Server 4的Account控制器的Logout方法即可。
////// Show logout page /// [HttpGet] public async TaskLogout(string logoutId) { // build a model so the logout page knows what to display //var vm = await BuildLogoutViewModelAsync(logoutId); //if (vm.ShowLogoutPrompt == false) //{ // // if the request for logout was properly authenticated from IdentityServer, then // // we don't need to show the prompt and can just log the user out directly. // return await Logout(vm); //} //return View(vm); var logout = await _interaction.GetLogoutContextAsync(logoutId); if (User.Identity?.IsAuthenticated == true) { // delete local authentication cookie await _signInManager.SignOutAsync(); // raise the logout event await _events.RaiseAsync(new UserLogoutSuccessEvent(User.GetSubjectId(), User.GetDisplayName())); } //默认跳转到Config.Client配置的PostLogoutRedirectUris地址 if (logout.PostLogoutRedirectUri != null) { return Redirect(logout.PostLogoutRedirectUri); } //获取客户端点击注销登录的地址 var refererUrl = Request.Headers["Referer"].ToString(); return Redirect(refererUrl); }
在VS2022联合运行AspNetId4Web认证服务器和BlzOidc网站,在BlzOidc网站先登录,再退出登录,可以看到浏览器返回BlzOidc网站。
HttpContext.SignOutAsync与_signInManager.SignOutAsync的区别
我先是用HttpContext.SignOutAsync退出登录,然后发现一个问题,当我再次通过客户端登录时,它自动使用之前的用户完成登录,根本不显示登录页面,不能更换用户重新登录!查看浏览器cookies,可以发现,它退出登录后,根本没有清除相关的cookies。
这是登录后的cookies。
这是HttpContext.SignOutAsync退出登录后的cookies,还有一部分。
采用_signInManager.SignOutAsync,退出登录之后,可以看到,浏览器cookies已经清除,所以再次通过客户端登录的话,会显示登录页面,重新输入登录的用户。
这是_signInManager.SignOutAsync退出登录后的cookies,完全没有了。
参考文章:
IdentityServer4退出登录,跳转到原页面 - dreamw - 博客园 (cnblogs.com)
感谢作者。
DEMO代码地址:https://gitee.com/woodsun/blzid4