public ActionResult Logout()
{
Request.GetOwinContext().Authentication.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
//"DefaultAuthenticationTypes.ApplicationCookie"是默认标识符,可以在Startup.Auth.cs文件中进行更改
return Redirect("~/"); //重定向到主页或者登录页面
}
在你的Keycloak实例中创建一个名为"logout"的客户端
接下来,在你的MVC应用中添加一个名为"KCLogout"的ActionResult,代码如下:
public ActionResult KCLogout()
{
var keycloakURI = "https://[你的Keycloak域名]/auth/realms/[你的Realm名字]/protocol/openid-connect/logout";
var postLogoutRedirectURI = Url.Action("Logout", "Account", null, Request.Url.Scheme);
return Redirect($"{keycloakURI}?redirect_uri={postLogoutRedirectURI}&client_id=[你的客户端ID]");
}
在这个ActionResult中,我们将用户重定向到Keycloak登出URl,告诉Keycloak我们正在注销并指定在注销完成之后将用户重定向到哪里以继续执行MVC应用程序。在Keycloak上创建"logout"客户端是因为它是一个公共客户端,可以在多个应用程序之间共享,而这个客户端注册了上面提到的回调URI。
@Html.ActionLink("Logout", "KCLogout")
现在你的用户将被成功注销并重定向到你的MVC应用程序的主页或登录页面。