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方法即可。
/// <summary> /// Show logout page /// </summary> [HttpGet] public async Task<IActionResult> Logout(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
标签:
IdentityServer
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现