Asp.net

確定使用者是否可以訪問請求的頁面?

  • November 17, 2010

我有一個具有多個角色的 ASP.Net 網站,每個角色都可以訪問一個單獨的目錄(即管理員使用者可以訪問 /admin,購物者可以訪問 /shop 等),使用共享登錄頁面。如果有人訪問登錄頁面,返回 URL 設置為他們無權訪問的目錄(例如,購物者訪問 /login.aspx?returnurl=/admin/index.aspx),則使用者可以成功驗證(登錄憑據為有效),但他們最終回到登錄頁面(他們無權訪問他們請求的頁面)。

我該如何選擇它,以便向使用者顯示一條消息?

我最終在登錄頁面的 page_load 事件中執行了此操作:

if (User.Identity.IsAuthenticated)
{
   LoginErrorDetails.Text = "You are not authorized to view the requested page";
}

想法是,如果經過身份驗證的使用者最終到達登錄頁面,他們要麼是因為嘗試訪問他們無權查看的頁面而被發送,要麼他們已經過身份驗證,然後手動進入登錄頁面(不太可能)。

如果使用者已經通過身份驗證,則進一步的操作是在使用者訪問登錄頁面時將其發送到相關首頁。

UrlAuthorizationModule.CheckUrlAccessForPrincipal()

是您需要用來測試使用者對某個位置(頁面或文件夾)的訪問權限(http://msdn.microsoft.com/en-us/library/system.web.security.urlauthorizationmodule.checkurlaccessforprincipal.aspx

引用自:https://stackoverflow.com/questions/1048492