繁体   English   中英

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

[英]Authorized File access in ASP.NET Web Application

有人可以帮我一个想法吗? 我有一个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

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

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

您可以将以下代码添加到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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM