簡體   English   中英

使用Identity Server 4 / asp.net核心2.2覆蓋訪問被拒絕的路由/路徑

[英]Override Access Denied route/path with Identity Server 4/asp.net core 2.2

對於身份服務器/ ASP身份非常新,所以我希望我能夠很好地解釋這種情況。

我遇到一個問題,我的網絡應用程序試圖導航到帳戶/ AccessDenied控制器和行動,如果發現他們是未經授權的......但這個確切的控制器和操作無處可去。

我嘗試了以下幾點,但我不確定它實際上正在做我認為的事情

    services.ConfigureApplicationCookie(options =>
    {
        options.AccessDeniedPath = $"{config.IDServUrl}/Identity/Account/AccessDenied";
        options.LoginPath = $"{config.IDServUrl}/Identity/Account/Login";
        options.LogoutPath = $"{config.IDServUrl}/Identity/Account/Logout";

    });

我的控制器或其中的操作具有Authorize屬性,我使用策略將其鎖定。 該部分工作正常,如果用戶被授權,他們將成功登錄/重定向到應用程序。

如果未經授權,現在發生了什么:

  1. 轉到Web應用程序(IDSrv客戶端)
  2. 重定向到Identity Server
  3. 登錄Identity Server
  4. 如果未經授權,將顯示404錯誤,因為它無法找到https://myapp/account/accessdenied

Account/AccessDenied在我的應用程序中的任何位置都不存在,我的Identity Server應用程序中也不存在。 如果用戶無權訪問某些內容,Identity Server將使用/Identity/Account/AccessDenied

所有這些都是默認的 - 我沒有改變任何相關的事情。

所以我想弄清楚的是如何告訴我的應用程序轉到https://MyIDSrvApp/Identity/Account/AccessDenied (因為它已經存在)或者我必須手動創建一個帶有AccessDenied Action的帳戶控制器使用IDSrv保護的每個應用程序。

我對這種行為有點不清楚,如何最好地處理它,以及我的應用程序甚至從第一個位置獲取此/account/accessdenied ,因為我沒有在任何地方手動設置它。

拒絕訪問的默認路徑在cookie中設置。 因此,它是外部身份服務器。 自定義AddCookie()上的訪問被拒絕路徑使用選項

.AddCookie("Cookies", options => 
{
   options.AccessDeniedPath = "/Account/oops";
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM