我試圖以聲明方式使用基於角色的授權,當未經授權的用戶嘗試訪問頁面時,它從不觸發異常或向用戶顯示錯誤消息。我應該怎麼做才能顯示未經授權的消息?這是可能的聲明方式?基於角色的授權
使用編碼不是一個很好的選擇意義我有幾個角色,文件夾授權幾個角色,而其他文件夾授權一個角色。
謝謝
我試圖以聲明方式使用基於角色的授權,當未經授權的用戶嘗試訪問頁面時,它從不觸發異常或向用戶顯示錯誤消息。我應該怎麼做才能顯示未經授權的消息?這是可能的聲明方式?基於角色的授權
使用編碼不是一個很好的選擇意義我有幾個角色,文件夾授權幾個角色,而其他文件夾授權一個角色。
謝謝
在您的登錄頁面中使用以下代碼將用戶重定向到未經授權的頁面或默認頁面。
protected void Page_Load(object sender, EventArgs e)
{
if(Page.IsPostBack)
return;
if(!Request.IsAuthenticated)
return;
if(!string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]) && !UrlAuthorizationModule.CheckUrlAccessForPrincipal(Request.QueryString["ReturnUrl"], User,"GET"))
{
// In Forms Authentication, authenticated but unauthorized requests are converted into a Redirect to the Login page.
// Redirect these to an error page instead.
Response.Redirect("~/UnauthorizedAccess.aspx", false);
}
else
{
Response.Redirect(FormsAuthentication.DefaultUrl, false);
}
}
請參閱此鏈接發生了什麼,並更多信息的圖片:
http://www.asp.net/security/tutorials/user-based-authorization-cs
不當使用版權材料。 – 2010-09-04 02:41:41
@Sky Sanders:我想,我已經刪除了你指的材料。如果沒有,請提供更多詳情。 – Greg 2010-11-30 17:15:43
它也可以使用web.config中設置各種文件夾或文件的權限。每個文件夾都可以有一個列表允許或丹尼斯像這樣:
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrators" />
<allow roles="Random Role" />
<deny users="*" />
<deny users="?" />
</authorization>
</system.web>
</configuration>
然後當有人打,要求他們無權它會重定向到登錄頁面授權頁面。然後,您可以檢查它們來自的頁面的查詢字符串,並可能設置特定於案例的響應,或者至少在它上面有returnURL頁面時說「您無權查看此頁面」。
你可以使用你的配置嗎?它做什麼而不是顯示錯誤? – Greg 2010-09-01 20:16:36
你的問題沒有明確定義。有明確定義的機制來執行聲明性訪問控制,但在標準的asp.net中,它們都不會導致503.最可能希望的是非描述性重定向到登錄頁面。這在許多情況下可能會有問題並且不令人滿意。請更清楚地定義你正在嘗試做什麼以及你迄今採取了哪些措施來實現這一目標。 – 2010-09-04 02:45:54