繁体   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