簡體   English   中英

保護未定義成員角色的Web文件夾

[英]Securing a web folder with out membership roles defined

我們的網站托管在共享服務器上。 我們有一個獨立於任何成員角色的登錄模塊。 我們尚未使用此功能。我們的登錄數據庫表僅包含電子郵件ID和pwd字段。 我們的其中一個文件夾(常規)包含敏感文件:pdf; jpg; doc文件等。我們不希望未經授權的用戶以及任何搜索引擎(例如google,yahoo等)都可以訪問此文件夾。 我們在網絡配置中添加了以下幾行

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

Web配置中的此更改已保護該文件夾,因為訪問該文件夾會導致權限拒絕消息等。但是,現在,我們希望已登錄的用戶能夠訪問此文件夾。 我們嘗試為登錄的用戶添加以下行:Roles.CreateRole(“ Administrators”); 但是,這會導致錯誤; 似乎asp.net試圖創建成員資格表,但無法這樣做。 是否可以通過完全忽略成員資格部分來強制將角色分配給用戶?

我們沒有使用方形表,也沒有使用它的計划。 我們也沒有使用ASP.NET成員資格框架。

重新構架原始問題:(從Web配置中刪除了allow role =“ Administrators”行)

<location path="General" allowOverride="true">
    <system.web>
      <authorization>
              <deny users="*" />
      </authorization>
    </system.web>
       </location>

Web配置中的上述更改導致“常規”文件夾中所有文件的“訪問被拒絕”。 是否可以(1)在運行時修改Web配置並更改拒絕用戶以允許用戶進入general / test.aspx頁面加載部分,或者(2)從general / test.aspx頁面的不同文件夾加載不同的Web配置加載?

聽起來像是數據庫連接問題。 您的遠程提供者是否允許遠程連接到數據庫? 您可以使用SQL Server Management Studio連接到它嗎?

一些共享的托管服務提供商不允許遠程訪問SQL Server。

您是否已將方形表安裝到數據庫中?

如果不需要使用Aspnet SQl服務器注冊工具 ,請在數據庫(已存儲角色)中創建正確的結構表。

創建一個成員身份用戶,例如管理員,Jojom,Angelina Jolie或您希望通過其擁有的屬性)創建默認角色(客戶,管理員等)

將用戶綁定到成員身份,然后您就可以使用授權規則。

您的方法僅對aspnet說,只有通過Context.User.IsInRole(“ Administrator”)訪問的管理員成員才能訪問此頁面....但是要成為管理員,您需要將其存儲到數據庫或自定義中提供者...

我不知道在不使用成員資格提供程序的情況下將角色分配給用戶的方法。 我能想到的一件事是,放棄Web配置中的位置扇區,並開始使用Global.asax Application_BeginRequest方法監視對應用程序的每個請求,並檢查該請求是否在受限文件夾中以及用戶是否登錄了(session )。

另一種方法是使用某種httpHandler進行保存。

編輯:在您的登錄表單中,一旦通過其用戶名和密碼進行身份驗證的用戶分配了一個會話變量,該會話變量指出該用戶為Administartor。

void Login()
{
    //check user+password
    //...
    if(UserIsAuthenticated)
    {
        Session["Administrator"] = true;
        //more stuff to do with authenticate user
    }
}

並在您的Global.asax中:

void Application_BeginRequest(object sender, EventArgs e)
{
    if(Request.PhysicalPath.Contains("RestrictedFolderName")//you can do a more profound check here
    {
         if((bool)Session["Administrator"])
             //all ok - do nothing
         else
             //not authorized user trying to access folder- do redirect or somthing 
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM