【发布时间】:2014-04-04 20:06:57
【问题描述】:
我们的网站托管在共享服务器上。我们有一个独立于任何成员角色的登录模块。我们没有使用这个功能。我们的登录数据库表只有电子邮件 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("管理员"); 但是,这会导致错误;并且似乎 asp.net 正在尝试创建会员表并且无法创建。 是否可以通过完全忽略 Membership 部分来强制为用户分配角色?
我们没有使用 sqlaspent 表,也没有使用它的计划。 我们也没有使用 ASP.NET Membership 框架。
重新构建的原始问题:(从 web 配置中删除了 allow roles="Administrators" 行)
<location path="General" allowOverride="true">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
Web 配置中的上述更改导致 General 文件夹中的所有文件的访问被拒绝。是否可以 (1) 在运行时修改 web 配置并更改拒绝用户以允许用户在 general/test.aspx 页面加载部分或 (2) 从 general/test.aspx 页面中的不同文件夹加载不同的 web 配置加载?
【问题讨论】:
-
您能否发布错误消息,我会说您需要拒绝匿名用户,然后允许需要访问该文件夹的角色。
-
数据库的存储位置没有区别。成员资格提供者将管理用户身份验证,而角色提供者将处理角色。加载后,他们将使用当前用户凭据,然后检查他们应从会员提供者那里获得的访问权限。
部分基本上充当 ACL。 -
原帖中添加了错误信息。另外,就像我提到的那样,我们没有在应用程序的任何地方使用会员角色功能。谢谢
-
它是服务器上的远程数据库吗?或者它是存储在被 ConnectionString 引用的 App_Data 目录中的 SQLExpress 数据库
-
远程数据库托管在远程第三方主机上。我们在 App_data 文件夹中没有任何内容——在我们的本地或远程 Web 文件夹中也没有。
标签: c# asp.net security directory membership