2015-03-27 2 views
0

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

У меня есть настройка restler и добавлено следующее к index.php;

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

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

например.

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

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

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

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

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

Также регистрируется как вопрос с проектом restler https://github.com/Luracast/Restler/issues/433

ответ

1

Просто реализовать 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; 
    } 
} 
+0

Заработал огромное спасибо! Я также нашел в ваших примерах для UrlVersioning он упоминает интерфейс, спасибо, что не сказал мне только RTFM :). – Madmartigan

Смежные вопросы