AuthenticationClass需要与UrlVersioning重复 - Luracast Restler

时间:2015-03-27 06:10:04

标签: php restler

我想要一个authenitcation类,并且我的APIS版本也是如此,而不必复制我的安全代码。

我已经设置了restler并将以下内容添加到index.php;

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

然后我在公共文件夹之外的另一个文件夹中设置我的身份验证类。它不是单独工作但我发现由于使用了基于UrlBased的版本控制,我不得不在不同的命名空间中重复该类。

e.g。

  

MyOrd --->安全---> v1 ---> APIAuth.php

     

MyOrd --->安全---> v2 ---> APIAuth.php

我不想做上述事情,但更简单就是

  

MyOrd --->安全---> APIAuth.php

我使用的是Restler RC5,任何指导都会受到赞赏,或者这是Restler的错误。

还记录了restler项目https://github.com/Luracast/Restler/issues/433

的问题

1 个答案:

答案 0 :(得分: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;
    }
}