【问题标题】:Authorized File access in ASP.NET Web ApplicationASP.NET Web 应用程序中的授权文件访问
【发布时间】:2012-07-19 23:48:37
【问题描述】:

有人可以帮我了解一下吗?我有一个 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

【问题讨论】:

  • 您的标签“autorize.net”看起来与此问题无关...我是否遗漏了问题和标签之间的一些隐藏链接?

标签: c# asp.net authorization


【解决方案1】:

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

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

【讨论】:

  • @Krishnakumar,如果有帮助,请接受此答案并关闭问题。
【解决方案2】:

您可以在 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-06-14
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多