Я хотел бы иметь класс аутентификации, а также версию 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
Просто реализовать 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;
}
}
Других решений пока нет …