如何拒绝特定用户的图像路径

时间:2012-10-02 12:55:45

标签: c# asp.net-mvc

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

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

现在从服务器访问您的内容时,请检查db表, 如果Allow-AnonymousFalseVisiting-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