Класс AuthenticationClass нуждается в дублировании с UrlVersioning — Luracast Restler

Я хотел бы иметь класс аутентификации, а также версию APIS без дублирования кода безопасности.

Я установил рестлер и добавил следующее в index.php;

Defaults::setProperty('useUrlBasedVersioning', true);
$r->addAuthenticationClass('MyOrg\\Security\\APIAuth');

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

например

MyOrd —> Безопасность —> v1 —> APIAuth.php

MyOrd —> Безопасность —> v2 —> APIAuth.php

Я не хочу делать выше, но более просто

MyOrd —> Безопасность —> APIAuth.php

Я использую Restler RC5, любые рекомендации будут оценены, или это ошибка с Restler.

Также зарегистрирован как проблема с проектом рестлера https://github.com/Luracast/Restler/issues/433

0

Решение

Просто реализовать iProvideMultiVersionApi и верните максимальную версию, поддерживаемую классом auth, которая в вашем случае будет 2. См. пример ниже

namespace MyOrg\Security;

use Luracast\Restler\iAuthenticate;
use Luracast\Restler\iProvideMultiVersionApi;

class Auth implements iAuthenticate, iProvideMultiVersionApi{

public function __isAllowed(){
return isset($_GET['api_key']) && $_GET['api_key'] =='allow';
}

public function __getWWWAuthenticateString(){
return 'Query';
}

/**
* Maximum api version supported by the api class
* @return int
*/
public static function __getMaximumSupportedVersion()
{
return 2;
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]