ASP.NET Web应用程序中的授权文件访问

时间:2012-07-19 23:48:38

标签: c# asp.net authorization

有人可以帮助我对此有所了解吗?我有一个C#网站应用程序,我想在其中授权访问网站目录中的文档。

如果用户对文档的请求通过我的网站http://www.mywebapp.com/documents/test.pdf中的链接说pdf,然后在浏览器中打开test.pdf,我实际上想验证用户是否有权根据角色访问pdf拿到。我已经为IIS中的文件夹“文档”启用了表单身份验证,如果用户未经过身份验证,系统会重定向到登录页面。我对此都很满意,但坚持授权。

我无法在web.config中设置角色,因为它对于不同的用户会有所不同。用户角色存储在该特定用户的httpcookie中。

在我的文档文件夹中,会有针对不同角色的不同文档。

将test.pdf称为供应商角色。因此,只有供应商才能访问此pdf

另一个角色供应商的文档form.pdf,只有角色供应商的用户可以看到这个pdf。

在浏览器中加载pdf之前,我应该编写一些处理程序来执行吗? 或者,如果有任何请求来/ documents /我是否应该重写URL以执行aspx页面以验证授权以及是否授权显示页面?

有人可以帮助我了解如何实施此授权。

感谢您的帮助!

谢谢, KK

2 个答案:

答案 0 :(得分:1)

看起来您的问题是“如何在我的网页上检查Cookie值并在Cookie正常时返回具有正确文档类型的文件流”。

  • 确保您正在处理所有请求(使用MVC比使用WinForms更容易,但以后也可以使用)
  • 阅读并验证Cookie
  • 如果检查通过则返回文件,不要忘记设置“content-diposition”和“content-type”标题。再次使用MVC中的文件结果更容易使用...如果使用模拟,请确保在正确的帐户下读取文件内容。

答案 1 :(得分:0)

您可以将以下代码添加到web.config并尝试

<location path="documents/test.pdf ">
        <system.web>
                <authorization>
                        <allow roles="Vendors"/>
                        <deny users="*"/>
                </authorization>
        </system.web>
</location>

<location path="documents/form.pdf ">
        <system.web>
                <authorization>
                        <allow roles="Role Supplier"/>
                        <deny users="*"/>
                </authorization>
        </system.web>
</location>