0

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

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

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

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

为称为供应商的角色说 test.pdf。所以只有供应商可以访问这个 pdf

角色供应商的另一个文档 form.pdf - 只有具有角色供应商的用户才能看到此 pdf。

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

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

感谢你的帮助!

谢谢,KK

4

2 回答 2

1

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

  • 确保您正在处理所有请求(使用 MVC 比使用 WinForms 更容易,但以后也可以)
  • 读取并验证 cookie
  • 如果检查通过则返回文件,不要忘记设置“content-diposition”和“content-type”标题。同样,MVC 中的文件结果更易于使用...如果使用模拟,请确保在正确的帐户下读取文件内容。
于 2012-07-20T00:40:39.750 回答
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>
于 2012-07-20T04:19:18.763 回答