【发布时间】:2013-01-30 15:34:32
【问题描述】:
我正在使用 CF9。我的问题与在登录时设置会话变量以识别用户和用户权限的管理应用程序有关。根据用户级别,允许查看某些页面而不允许查看其他页面。 (我将把它称为我的“安全框架”。它包裹在根目录中的所有内容中。)
此安全框架由 CFM 页面顶部的 cfif 语句和页面底部的关闭 cfelse 和 (</)cfif 组成。如果用户具有该级别权限 - 标准内容,则显示此打开 cfif 和关闭 cfif 之间的所有内容。
某些用户可以上传PDF文件,这里没问题。 PDF 文件上传到根目录外的文件夹,然后移动并重命名为根目录内的文件夹。
上传时,用户选择类别和子类别等,这些变量在上传过程中插入到SQL数据库中。因此,我有 filePaths 和 fileNames 等在页面上设置动态链接,供用户在浏览器中单击并加载 PDF(受密码保护)。
我有指向带有 URL 变量 filePath= #filePath# & fileName = #fileName# 的 ShowThisPDF.cfm? 的动态链接。我已经在页面顶部和底部设置了带有安全框架的ShowThisPDF.cfm,并尝试将上传的 PDF 复制到此页面中,以便 PDF 显示在浏览器中。
我用cfdocument 和cfpdf 和cfcontent 等尝试了很多方法。当我读到这是抛出的错误时,它看起来确实到达了上传的文件,但我明白了由于我认为的安全框架,每次都“拒绝访问”。
附带说明一下,在此应用程序的其他地方,我可以使用 cfdocument 从我的 cf 页面创建 PDF,并在页面周围包裹安全框架,这非常有效 - 在浏览器中显示 PDF。我的问题是将现有 PDF 加载到具有安全框架的 CFM 页面中 - 这应该允许加载 PDF。
有人知道我如何完成上述任务吗?我讨厌尝试绕过我的安全措施,将上传的 PDF“复制”到 CFM 页面中似乎合乎逻辑,该页面将 PDF 包装在安全框架中,然后在浏览器中显示 PDF。
【问题讨论】:
-
ColdFusion 是否有权查看这些目录中的文件?
-
是您收到错误消息的“访问被拒绝”错误还是由 ColdFusion 抛出的?如果 ColdFusion 无法访问当前位置的 PDF 文件,它可能根本不是您的安全框架。
-
我认为你们为我指明了正确的方向。在我(作为用户)登录并在浏览器地址栏中输入指向 pdf 文件的直接链接后,我会从服务器获得一个弹出用户名/密码。我在一个分片的托管环境中。 (我没有服务器的管理员权限,但我可以设置文件夹权限)。也许就是这样吧? - 编辑
-
所以您输入
http://yourdomain.com/ShowThisPDF.cfm?filePath=someFile&fileName=somefilename并提示您输入密码,或者您是否尝试转到http://yourdomain.com/mypdf.pdf并获得提示? -
请记住,您的 ColdFusion 安全代码只控制您的用户可以看到的网页。在访问文件系统时,主要是操作系统的安全性,用户是 ColdFusion。
标签: security pdf coldfusion