2010-01-20 144 views
2

我在我的webconfig中使用以下內容,以便只有admin訪問admin文件夾。guest拒絕訪問admin文件夾重定向到Login.aspx

<location path="Admin" allowOverride="true"> 
<system.web> 
    <authorization> 
    <allow roles="Administrators" /> 
    <deny users="*" /> 
    </authorization> 
</system.web> 

現在,當來賓用戶試圖訪問這一點,他將被重定向到登錄頁面。

我希望用戶要麼笑一個彈出窗口,用戶不能訪問它,還是留在網頁上的標籤一些錯誤信息在同一頁上...

任何建議?

感謝

這裏是webconfig

<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" protection="All" name="Cookie" timeout="120" path="/" slidingExpiration="true" 
     defaultUrl="Default.aspx"> 
    </forms> 

回答

1

這是我在登錄頁面做..

if (!IsPostBack) 
     { 

      if (User.Identity.IsAuthenticated) 
      { 
       if (!string.IsNullOrEmpty(Request.QueryString["ReturnUrl"])) 
       { 
        Response.Redirect("~/Guest/Pagedenied.aspx"); 
       } 
      } 

     } 

這樣的管理文件夾被拒絕的天氣是ASPX頁面或任何其他文件在它...登錄屏幕也避免了...

如果任何人有什麼更好的建議,請..

感謝

1

相反否認在web.config中的訪問,你可以在代碼編程否認背後的訪問更多的代碼。

 if (User.IsInRole("Administrators")) 
     { 
      accessDeniedMessage.Visible = true; 
      adminPage.Visible = false; 
     } 
     else 
     { 
      adminPage.Visible = true; 
      // show admin page 
     } 
+0

有沒有辦法做到這一點..我不知道...或在進入每一頁之前我檢查用戶是否在角色的管理員...? – user175084 2010-01-20 17:57:58

+0

我添加了一個代碼片段。希望有所幫助。 – mark123 2010-01-20 17:59:36

+0

但我在我的管理文件夾中有很多頁面..所以生病必須每次檢查此代碼..這將是耗時的..因此在webconfig ..我相信必須有一種方法,以保持在同一頁上if訪問被拒絕..謝謝 – user175084 2010-01-20 18:05:06

1

您可以使用自定義錯誤。看here,並注意重定向的錯誤是401而不是404。

+0

是的,我檢查了這一點,但無法理解一些部分... – user175084 2010-01-20 22:53:22

+0

好吧,我急忙寫了這個回覆,但我很樂意將它擴展 - 你能解釋一下你在那裏發現的困難嗎? – 2010-01-21 01:04:11