Javascript 限制查看器js url在未登录的情况下访问文件
如果用户未登录,我需要限制从服务器访问文件 我正在使用ViewerJS预览文件,只需输入url即可从服务器访问上传的文件Javascript 限制查看器js url在未登录的情况下访问文件,javascript,php,fat-free-framework,Javascript,Php,Fat Free Framework,如果用户未登录,我需要限制从服务器访问文件 我正在使用ViewerJS预览文件,只需输入url即可从服务器访问上传的文件 http://localhost/gbdportal-new/ViewerJS/#../uploads/2138970950.pdf 我尝试在用户点击该路线时执行检查: $f3->route('GET ViewerJS/*', function() { /* if user not logged in.. no access */ }); 但是vie
http://localhost/gbdportal-new/ViewerJS/#../uploads/2138970950.pdf
我尝试在用户点击该路线时执行检查:
$f3->route('GET ViewerJS/*', function()
{
/* if user not logged in.. no access
*/
});
但是viewerJS直接渲染文件,而不经过这个路由检查[我猜]
如何防止用户在未登录的情况下访问该文件
非常感谢您的帮助。谢谢。根据您的服务器配置,如果您的服务器检测到请求的URL是一个文件,它将直接获取该文件,而不会执行您的代码 最好的方法是在PHP代码中创建一个新的路由,检查用户是否已连接,然后打开文件将其发送到客户端 代码看起来像
$f3->route('GET getFile/@file', function()
{
if( /*the user is logged in*/){
$fileName = $f3->get('PARAMS.file')
header("Content-type:application/pdf");
readfile("uploads/$file.pdf");
}else{
//return a 403 error
}
});
现在你可以把http://localhost/gbdportal-new/ViewerJS/#../getFile/2138970950
,除非用户登录,否则无法获取文件
我希望我回答了你的问题,祝你有一个愉快的一天PHP不关心
#
或之后的任何事情。实际路径就是/gbdportal new/ViewerJS/
,不管您在#
后面放了什么。如果删除*
,会怎么样?您以前似乎也有路径段。尝试了$f3->route('GET gbdportal news/ViewerJS/',函数()
?是的。是一样的。你以前用过viewerJS吗?我看了文档,如果我理解正确,它会获取包含“#…”部分后面URL的文件,因此如果你使用http://localhost/gbdportal-new/ViewerJS/#../getFile/2138970950
它实际上会在http://localhost/gbdportal-new/getFile/2138970950
因此执行PHP代码并执行身份验证,对吗?web服务器不会将该URL转换为真实的文件路径(nether会使用PHP),因为它使用哈希指向实际文件。web服务器仅检查文件夹ViewerJS
是否存在(因为这是实际URL的最后一部分)。因此OP试图保护使用ViewerJS的实际URL。我知道自动执行此操作的不是服务器,而是JsViewer使用该散列然后检索内容,如果您在JsViewer示例页面的控制台中查看,则代码
加载JsViewer,然后JSVEWER获取文件/demo/ohm2013.odp
如果您将该文件隐藏在PHP控制器后面,它将允许您控制其访问。