2017-04-06 12 views
5

Tôi đang sử dụng IdenetityServer4 và chuyển hướng đến máy khách MVC sau khi Đăng xuất không hoạt động. Sau đây là bộ điều khiển khách hàng MVC của tôi Đăng xuất hành động:IdentityServer4 - Chuyển hướng đến máy khách MVC sau khi đăng xuất

public async Task Logout() 
{ 
    await HttpContext.Authentication.SignOutAsync("Cookies"); 
    await HttpContext.Authentication.SignOutAsync("oidc"); 
} 

Sau đây là máy chủ định danh 4 Tệp cấu hình máy chủ.

public static IEnumerable<Client> GetClients() 
{ 
    return new List<Client> 
    { 
     // other clients omitted... 

     // OpenID Connect implicit flow client (MVC) 
     new Client 
     { 
      ClientId = "mvc", 
      ClientName = "MVC Client", 
      AllowedGrantTypes = GrantTypes.Implicit, 

      // where to redirect to after login 
      RedirectUris = { "http://localhost:58422/signin-oidc" }, 

      // where to redirect to after logout 
      PostLogoutRedirectUris = { "http://localhost:58422/signout-callback-oidc" }, 

      AllowedScopes = new List<string> 
      { 
       IdentityServerConstants.StandardScopes.OpenId, 
       IdentityServerConstants.StandardScopes.Profile 
      } 
     } 
    }; 
} 

Tôi muốn người dùng được chuyển hướng trở lại ứng dụng khách MVC sau khi đăng xuất khỏi IdentityServer. Ngay bây giờ người dùng phải nhấp vào liên kết hiển thị trong hình ảnh dưới đây để chuyển hướng trở lại trang web MVC nhưng tôi nghĩ rằng người dùng nên được tự động chuyển hướng trở lại khách hàng MVC.

enter image description here

+1

phần lỗi xin vui lòng và bản ghi bổ sung. – Lutando

Trả lời

5

Không có vấn đề gì trong Config.cs hoặc trong bộ điều khiển MVC.

Đến IdentityServer4 của bạn ứng dụng sau đó trong phương pháp AccountController của Thoát [HttpPost], thực hiện thay đổi sau:

public async Task<IActionResult> Logout(LogoutViewModel model) 
{ 
    ...  
    //return View("LoggedOut", vm); 
    return Redirect(vm.PostLogoutRedirectUri); 
} 

này sẽ chuyển hướng người dùng quay trở lại MVC ứng dụng (trong trường hợp của bạn).

Có một cách tốt hơn để làm điều này: Bạn có thể thiết lập các tùy chọn từ AccountOptions.cs như sau:

public static bool ShowLogoutPrompt = false; 
public static bool AutomaticRedirectAfterSignOut = true; 
+0

Tôi có cùng cấu hình Máy khách với @Sandeep bao gồm PostLogoutRedirectUris nhưng khi tôi bắt đầu dự án ở chế độ gỡ lỗi, tôi có thể thấy rằng vm.PostLogoutRedirectUri là null. Bất kỳ ý tưởng tại sao? – CodeEngine

+0

Cần làm rõ thêm. Bạn có đang cố đăng xuất khỏi ứng dụng của mình trong khi bạn đang gỡ lỗi không? Bởi vì, vm.PostLogoutRedirectUri sẽ được đặt khi yêu cầu đăng xuất được nhận từ bất kỳ máy khách được cấu hình nào. – Akhilesh

Các vấn đề liên quan