[英]How to call external URL in Asp.NET Core Controller?
這些天我正在研究 SSO,我們有一個主應用程序,我們稱之為 A,用戶從那里登錄,然后使用 SSO 用戶可以訪問與應用程序 A 相關的多個應用程序。如果用戶從應用程序 A 注銷,那么用戶應該注銷從所有關聯的應用程序以及然后重定向回 A 的登錄頁面。 我遇到的問題是一個應用程序 B 與應用程序 A 相關聯。要注銷此應用程序 (B),我們必須點擊 url 注銷應用程序 B。問題是當我從瀏覽器點擊此 url 時,應用程序B 注銷成功,但是當我嘗試從代碼注銷中點擊 url 時不起作用。 我嘗試了以下解決方案,但它不起作用
我不希望用戶看到應用程序 B 注銷頁面,而是應該看到應用程序 A 注銷頁面。 有什么方法可以擊中 url 以便它注銷應用程序 b? 下面是我的代碼。 有人告訴我在隱藏的 i-frame 中打開這個 url。 我不知道如何在 controller 中執行此操作。 下面是代碼
塊引用
public IActionResult Logout() {
string urlLogout = "application/logout.action";
var abc = Redirect(urlLogout); //it's is not working
return Redirect(urlLogout); //it work's fine
}
使用HttpClient擊中 url。
一個例子如下:
static readonly HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("application/logout.action");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
請記住,您應該創建完整的請求。 這意味着您需要將標頭和 cookies 添加到請求中。
添加授權 header 的示例(這是用於客戶端憑據流,但您了解它的要點)。
client.DefaultRequestHeaders.Authorization
= new AuthenticationHeaderValue("Bearer", "Your Oauth token");
如果以上都不起作用,說明應用B的登出頁面在客戶端做了一些動作。
在最壞的情況下,您可以在應用程序 B 中創建一個簽核操作,您可以從 c# 調用該操作並使 session 無效。 當用戶嘗試使用無效的 session 訪問應用程序 B 時,返回 401 錯誤並適當處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.