Есть ли способ использовать auth() или другую функцию вне папки app\Http\Controllers?

Я хочу использовать ключи доступа для responsivefilemanager. Поскольку ключи доступа видны пользователям (example.com/filemanager/dialog.php?akey=usersaccesskeys), я хочу, чтобы ключи доступа были временными (только для одноразового использования). Но я думаю, что для этого мне нужны "auth()" и другие функции, такие как "User::find($user_id)". В любом случае возникает ошибка, когда я использую функции auth() или контроллера в файле конфигурации файлового менеджера: «Вызов неопределенной функции auth() в /path/to/config/config.php». Я застрял и не хочу развертывать свой веб-сайт таким образом. Есть ли другие способы сделать отзывчивый файловый менеджер безопасным?

Я также пытался использовать php-файл контроллера в app\Http\Controllers\RfmController.php. Другая ошибка показывает «Uncaught Error: Class 'App\Http\Controllers\Controller'». Это функция, на которую распространяется RfmController.

Я запускаю сервер LAMP. PHP 7.3.7 Ларавель 5.8

В моем config.php

'access_keys' => array(auth()->user()->name),

с помощью контроллера.php

В моем config.php

namespace App\Http\Controllers;
require('/path/to/app/Http/Controllers/RfmController.php');
$rfm = new RfmController;
.
.
.
'access_keys' => array(RFMClass::rfmakey()),

В RfmController.php

namespace App\Http\Controllers;
class RfmController extends Controller
{
    public function rfmakey()
    {
        return auth()->user()->id;
    }
{

Я ожидал, что rfmakey() вернет имя пользователя


person MLARLAR    schedule 11.08.2019    source источник


Ответы (1)


Вам нужно использовать промежуточное ПО. Из официальной документации laravel:

Если вы используете контроллеры, вы можете вызывать метод промежуточного программного обеспечения из конструктора контроллера вместо того, чтобы напрямую присоединять его к определению маршрута:

public function __construct()
{
    $this->middleware('auth');
}

Кроме того, я бы воздержался от добавления динамических значений или кода в мой файл config.php, например

auth()->user()->name

Это не очень хорошая практика.

Надеюсь, это решение поможет вам!

person kp123    schedule 11.08.2019
comment
Спасибо за ответ, я понял. Ничего, если я использую значения сеанса в dialog.php? Я не могу думать ни о каком другом пути. - person MLARLAR; 17.08.2019