Ограничить доступ к файлам html в WordPress на основе зарегистрированных пользователей - PullRequest
0 голосов
/ 24 января 2019

У нас есть HTML-файлы в папке в приложении WordPress.мы хотим ограничить доступ к html-файлам для пользователей WordPress на основе файлов. Как мы можем ограничить доступ к html-файлам?

Механизм паролей htaccess недостаточно хорош, поскольку пользователь, уже вошедший в WordPress, повторно вводит учетные данные во всплывающем окне.

Есть ли какие-либо указатели на реализацию?

1 Ответ

0 голосов
/ 24 января 2019

Это решение, которое я использовал для защищенных файлов в Wordpress. Файлы находились в определенной папке, доступ был запрещен для всех пользователей в этой папке через .htaccess. контроль доступа чисто по статусу пользователя WordPress.

serve.php:

<?php 
ob_start();
header('Content-Type: html');
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
//this will enable the basic functionality to check for user status
$wpload=$_SERVER['DOCUMENT_ROOT'] . '/wp-load.php';
define( 'WP_USE_THEMES', false ); 
Include_once($wpload);
$loggedin= is_user_logged_in();
//here you can also do more extensive checks. eg: each user has only access to his own folder or files
if(!$loggedin) exit;

$file= sanitize_text_field($_GET['file']);
$file= realpath(dirname(__FILE__) . '/../../../uploads/myplugin/').'/'.$file;

ob_end_clean();
readfile($file);
?>

Ссылка для получения файла будет выглядеть примерно так:

https://mydomain/serve.php?file=my-sample.html

Это работает очень хорошо. Один из недостатков заключается в том, что кеширование в браузере не работает с этим методом, и на стороне сервера вывод также происходит медленнее. Это не должно быть проблемой с HTML-файлами. Я использовал его, чтобы показать изображения, добавил, может быть, 500 мс задержки

, так что, в основном, serve.php - это автономный файл, который загружает основные файлы WordPress и проверяет параметр, переданный в строке запроса.

...