当我们在使用IdentityServer4的时候,使用IdentityServer4 退出登录后,默认会跳转到MyConfig.Client配置的PostLogoutRedirectUris地址,我们如何动态的跳转到原来的地址呢?如下修改:
AccountController里面Logout修改
[HttpGet]
public async Task<IActionResult> Logout(string logoutId)
{
#region IdentityServer4 退出登录后,默认会跳转到Config.Client配置的PostLogoutRedirectUris地址,做如下改动,则会动态的跳转到原来的地址
var logout = await _interaction.GetLogoutContextAsync(logoutId);
await HttpContext.SignOutAsync();
if (logout.PostLogoutRedirectUri != null)
{
return Redirect(logout.PostLogoutRedirectUri);
}
var refererUrl = Request.Headers["Referer"].ToString();
return Redirect(refererUrl);
#endregion
}
进入授权中心,删除PostLogoutRedirectUris配置:
new Client
{
ClientId = "js",
//PostLogoutRedirectUris = { "http://localhost:5003" }
//...
}
进入前端Vue项目删除post_logout_redirect_uri配置:
var config = {
authority: "http://localhost:5000",
//post_logout_redirect_uri: "http://localhost:5003/",
//...
};
一切修改完成

本文介绍如何在IdentityServer4中实现退出登录后的动态跳转,通过修改AccountController中的Logout方法,利用Referer头信息返回至原地址,同时移除前端和授权中心的固定跳转配置。
4万+

被折叠的 条评论
为什么被折叠?



