0

我的网站有一个名为 uploads 的文件夹,其中每个客户都有一个文件夹。我的问题是,拒绝用户 A 查看来自用户 B 的上传的最佳做法是什么?

4

4 回答 4

1

您可以通过更改 web.config 来做到这一点。请参阅此处的文档:http: //support.microsoft.com/kb/815151

基本上你的 web.config 看起来像:

<?xml version="1.0"?>
<configuration>
    <location path="uploads/UserA">
        <system.web>
            <authorization>
                <allow users="UserA"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </location>
    <location path="uploads/UserB">
        <system.web>
            <authorization>
                <allow users="UserB"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </location>
</configuration>
于 2012-10-02T13:11:04.660 回答
1

如果用户无权访问所请求的路径,也许可以考虑使用 HttpHandler 来拦截请求并生成 403(或您想要做的任何事情)。

或者,您可以将 Global.asax 中的逻辑放在 BeginRequest 方法中。

于 2012-10-02T13:16:11.203 回答
0

您可以对文件夹使用 NTFS 权限,强制用户进行身份验证。我在 2000 年为一个网站做了这个。虽然在这种情况下,这就像用大炮杀死蚊子。

于 2012-10-02T13:20:26.817 回答
0

假设您可能具有以下数据结构:
您可以将文件名写入数据库列。
因此,您可以使用 True/False 添加一个名为“Allow-Anonymous”的列。

现在在从服务器访问您的内容时,检查 db 表,如果Allow-AnonymousFalse并且Visiting-User是其他owner然后拒绝页面显示。否则,您可能会显示内容。

DataBase mock:
Id   Data    Path             OwnerId     AllowAnonymous    Status
1    Data-A  ~/upload/Data-A  1           False             True

代码模拟:

if(AllowAnonymous == True && UserId == OwnerId && Status == True)
  // Show data on page
else
  // Redirect to deny page
于 2012-10-02T13:37:04.730 回答