2015-09-23 45 views
1

我正在學習在asp.net webform應用程序中實現安全性。我正在使用簡單的formauthentication,有一個頁面(不是登錄),可能允許通過檢查來自url的令牌進行匿名訪問,並查看它是否存在於數據庫表中。 網上調查後,我目前的解決辦法是:是否可以在Global.asax中添加對業務對象層的引用

的web.config:

  • 一般形式的認證

    <authentication mode="Forms" > 
    
  • 允許匿名用戶訪問特定頁面

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

的Global.asax:在業務對象層

  • 調用方法來檢查令牌數據庫有效

    protected void Application_PostAuthenticateRequest(object sender, EventArgs e) 
    { 
        bool auth = User.Identity.IsAuthenticated; 
        if (!auth) 
        { 
         string token = Request.QueryString["token"]; 
         var authenticateResult = AuthenticateBO.AuthenticateProductRequest(token); 
        } 
    } 
    

我看到一些帖子在網上那並不是」建議在應用程序級調用數據庫連接。我想知道我的情況(需要檢查數據庫中的令牌),我可以在Global.asax中添加業務層引用嗎?還是有更好的解決方案?謝謝!

+0

絕對不行,從BLL引用你的UI - 它的UI - > BLL - > DAL。 BLL也沒有任何好處訪問Global.asax.cs方法 –

+1

如果您正在調用業務層方法,並且該方法在內部訪問數據庫,那應該不成問題。 –

回答

0

正如Arghya C所說,看起來您正在使用業務對象來檢查您的令牌是否有效。如果此方法訪問您的數據庫或不是由您的業務層決定。

這裏需要注意的重要一點是,Global.asax對數據庫一無所知,這表明您的實現具有良好的分離性,如果您不知道您是否正在使用數據庫進行身份驗證不說。

相關問題