Cakephp3 Tiny Auth Разрешить Auth fail - PullRequest
0 голосов
/ 08 июня 2019

Я использую плагин TinyAuth с моим Cakephp3.У меня есть контроллер со следующим пространством имен:

namespace App\Controller\Api\Datatables;

Контроллер - это списки, а моя функция - Фильтр

У меня есть следующие настройки маршрута:

Router::scope('/datatables', ['prefix' => 'api/datatables'], function (RouteBuilder $routes) {
    $routes->extensions(['json', 'xml', 'ajax']);   
    $routes->fallbacks(DashedRoute::class);
});

Этопозволяет мне вызывать следующий URL:

/datatables/listings/filter.json

Я хочу разрешить функцию фильтра:

datatables/Listings = filter

Когда я вызываю свой URL, я перенаправляюсь на страницу входа.Если я вхожу в систему, URL работает, поэтому allow_auth работает.

Я также попробовал следующее:

api/datatables/Listings = filter
api/Datatables/Listings = filter
Api/Datatables/Listings = filter
api/datatables/Listings = filter
datatables/Listings = filter
Datatables/Listings = filter
api/Listings = filter

Независимо от того, какой путь не разрешен.Если я переместлю контроллер в положение по умолчанию, то в allow_auth:

Listings = filter

функция фильтра будет доступна без авторизации.Это говорит о том, что существует проблема с плагином при использовании области действия маршрутизатора.

Вот плагин composer.json

{
    "name": "ypnos-web/cakephp-datatables",
    "description": "jQuery DataTables for CakePHP 3",
    "homepage": "https://github.com/ypnos-web/cakephp-datatables",
    "type": "cakephp-plugin",
    "keywords": ["cakephp", "datatables"],
    "license": "MIT",
    "authors": [
        {
            "name": "Frank Heider",
            "homepage": "https://github.com/fheider",
            "role": "Author"
        },
        {
            "name": "Johannes Jordan",
            "homepage": "https://github.com/ypnos-web",
            "role": "Author"
        }
    ],
    "require": {
        "php": ">=7.0",
        "cakephp/cakephp": "^3.6"
    },
    "autoload": {
        "psr-4": {
            "DataTables\\": "src"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "DataTables\\Test\\": "tests",
            "Cake\\Test\\": "./vendor/cakephp/cakephp/tests"
        }
    }
}

Правильно ли я утверждаю, что урезанные маршруты работают дляacl.ini - они, кажется, насколько я могу видеть.

Я использую сокращенные маршруты для лучшей организации своих функций.

Мои параметры запроса следующие, когда я вызываю /datatables/listings/filter.json?

'controller' => 'Listings',
    'action' => 'filter',
    'pass' => [],
    'prefix' => 'api/datatables',
    'plugin' => null,
    '_ext' => 'json',
    '_matchedRoute' => '/datatables/:controller/:action/*',
    '?' => [
        'string' => 'seat'
    ]

Если я позвоню /api/datatables/listings/filter.json:

Не удается найти Datatables класса контроллера.

1 Ответ

0 голосов
/ 08 июня 2019

Я не слишком знаком с плагином, но api/datatables/Listings кажется правильным форматом, однако, глядя на источник плагина, кажется, что вложенные префиксы не поддерживаются:

if (strpos($key, '/') !== false) {
    list($res['prefix'], $key) = explode('/', $key);
}

https://github.com/dereuromark/cakephp-tinyauth/blob/1.11.0/src/Utility/Utility.php#L23-L25

Этот код будет анализировать api в качестве префикса и datatables в качестве контроллера.

Возможно, вы захотите открыть проблему или добавить поддержку для неесебя, если сможешь.

...