Php 禁止在没有RBAC权限的情况下直接访问png或pdf文件
我正在使用Yii2和witget()来访问controll,当用户登录时,他可以看到所有图像,这是确定的,但如果不登录,我需要直接使用外部url阻止所有访问 比如说 http://examplesite.com/web/files/example.jpg 如果用户未登录,他将看不到该图像 我试过使用“.htacces”,但我发现没有任何效果Php 禁止在没有RBAC权限的情况下直接访问png或pdf文件,php,yii2,apache2,Php,Yii2,Apache2,我正在使用Yii2和witget()来访问controll,当用户登录时,他可以看到所有图像,这是确定的,但如果不登录,我需要直接使用外部url阻止所有访问 比如说 http://examplesite.com/web/files/example.jpg 如果用户未登录,他将看不到该图像 我试过使用“.htacces”,但我发现没有任何效果 我使用PHP 7,Apache over linux作为一种简单的方法,您可以通过在视图文件中实现以下代码来检查用户是否登录: <div>
我使用PHP 7,Apache over linux作为一种简单的方法,您可以通过在视图文件中实现以下代码来检查用户是否登录:
<div>
<? if(\Yii::$app->user->isGuest()):?>
<!--Display image for Guests-->
<? elseif:>
<!--Images for users-->
<? endif; ?>
</div>
通过这种方式,您可以通过应用程序传递所有图像。但是那些需要通过逻辑给出的内容应该存储在外部无法访问的地方,或者由页面通过特定路径请求,例如:图像。
所有图像都在web/img中,可直接从Apache获得,对于具有逻辑的图像,请使用:
Url::to(['images/get-images', 'imgPath => 'img/logo.png'])
// urlManager rule
[
'pattern'=>'get-img/<imgPath>',
'route'=>'images/get-images'
],
Url::to(['images/get images','imgPath=>'img/logo.png']))
//urlManager规则
[
“模式”=>“get-img/”,
“路由”=>“图像/获取图像”
],
希望它会有所帮助。作为一种简单的方法,您可以通过在视图中实现此代码来检查用户是否登录了文件:
<div>
<? if(\Yii::$app->user->isGuest()):?>
<!--Display image for Guests-->
<? elseif:>
<!--Images for users-->
<? endif; ?>
</div>
通过这种方式,您可以通过应用程序传递所有图像。但是那些需要通过逻辑给出的内容应该存储在外部无法访问的地方,或者由页面通过特定路径请求,例如:图像。
所有图像都在web/img中,可直接从Apache获得,对于具有逻辑的图像,请使用:
Url::to(['images/get-images', 'imgPath => 'img/logo.png'])
// urlManager rule
[
'pattern'=>'get-img/<imgPath>',
'route'=>'images/get-images'
],
Url::to(['images/get images','imgPath=>'img/logo.png']))
//urlManager规则
[
“模式”=>“get-img/”,
“路由”=>“图像/获取图像”
],
希望这会有所帮助。您不能阻止访客用户通过直接链接查看图像。如果在.htaccess中阻止图像,则登录的用户将无法查看这些图像 您可以通过PHP实现对图像的访问: 1.图像URL看起来像/images/some\u散列 2.应用程序应捕获对/images/*的所有请求 3.应用程序检查每个请求中的访问权限
4.若允许访问,应用程序将读取一个图像文件并给出响应(带有正确的标题)。您应该实现(1)中的真实图像和散列之间的映射。您不能阻止来宾用户通过直接链接查看图像。如果在.htaccess中阻止图像,则登录的用户将无法查看这些图像 您可以通过PHP实现对图像的访问: 1.图像URL看起来像/images/some\u散列 2.应用程序应捕获对/images/*的所有请求 3.应用程序检查每个请求中的访问权限
4.若允许访问,应用程序将读取一个图像文件并给出响应(带有正确的标题)。您应该实现(1)中的真实图像和散列之间的映射。我认为,就像一个选项一样,您可以看看实现一个控制操作来返回图像。并将访问控制行为添加到此操作中。我认为,与选项一样,您可以查看实现控制操作以返回图像。并在此操作中添加访问控制行为。他需要阻止未注册用户访问某种类型的文件或文件的原因,以便他们无法共享此链接,甚至是哈希链接。像“abc.com/hash123”这样的链接仍然可以被任何知道它的人打开。这就是为什么他需要阻止未注册用户访问某些类型的文件或文件,这样他们就不能共享此链接,即使是哈希链接。像“abc.com/hash123”这样的链接仍然可以被任何知道它的人打开。不必从文件夹中移动所有文件,因为我在“web/uploads/”上有我的所有图像,只是我添加了这个规则。RedirectMatch 403^/lmyproject/web/uploads/*$谢谢Serghei Leonenco。这只是图像位置的示例。没有必要从文件夹中移动所有文件,因为我将所有图像都放在“web/uploads/”上的文件夹中。我刚刚添加了此规则。RedirectMatch 403^/lmyproject/web/uploads/*$谢谢Serghei Leonenco。这只是图像位置的示例。