基本上,我使用的是标准的Yii2设置。我有一个登录,允许用户看到链接到文件。文件在下载文件夹中。但是,只有当用户是"非访客"时,才能看到看到链接的页面。现在,如果有人只是将链接复制给其他人,其他人就可以在没有登录的情况下下载该文件。有问题的文件并不是"付费"的,但由于服务条款和其他法律,我要求人们在允许下载它们之前登录。我可以通过php动态创建下载链接吗?至少检查"isGuest",如果isGuest = True,则重定向到登录页面。除了直接下载链接,我该怎么做呢?
您可以使用AccessControl类为特定角色或用户提供对特定操作的访问。
你可以这样做:
class DownloadController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => false,
'actions' => ['download'],
'roles' => ['?'],
],
],
],
];
}
// ...
}
'?'
Role为guest用户。
您可以在控制器的操作中添加一个检查来验证用户是否登录,使用:
Yii::$app->user->getIsGuest();
查看文档了解更多细节:Yii2 web user
禁止任何人直接下载文件。您可以使用htaccess或将下载文件夹放入受保护的文件夹中。现在您需要在控制器中执行下载操作,用于检查用户是guest还是已登录。如果可以,只需将文件从您的文件系统传递到用户浏览器。PHPS readfile可以帮到你