2013-02-05 51 views
3

上我在web.config中的一些線條,看起來像下面這樣:檢查用戶是否是未經授權的

<authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> 
    </authentication> 

    <location path="Error.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="Default.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

我controling登錄方法自己。假設用戶未登錄並登錄到abc.aspx頁面。 Abc.aspx頁面沒有被授權在沒有登錄的情況下查看,如上面的web.config所示,只允許使用default.aspx和error.aspx。如何動態檢查我目前所在的頁面是否允許通過web.config?我可以硬編碼它,但我想看看這是否可行,那樣我只需要修改web.config而不是每次我想將頁面添加到例外列表中的代碼。

+2

你爲什麼要這樣做,而不是使用'Authorize'屬性,它將處理未經授權的用戶重定向? –

+0

ASP.NET是不是爲你處理重定向?對我來說,任何嘗試訪問「Error.aspx」或「Default.aspx」以外的頁面都應該將未經身份驗證的用戶重定向到登錄頁面。請更好地解釋「我自己控制登錄方法」的含義 –

回答

0

在每個頁面,您可以添加:

protected void Page_Load(object sender, EventArgs e) 
    { 
      if (!Request.IsAuthenticated) 
      { 
       Response.Redirect("~/Account/Login.aspx"); 
      } 

    } 
1

authentcation標籤後給你的webconfig添加。這將確保未經授權的用戶不訪問任何頁面,您添加的其他標籤應允許匿名訪問您指定的頁面。

<authorization> 
    <deny users="?"/> 
</authorization> 
相關問題