2010-11-28 4 views
2

Salut Je sais que je peux définir l'authentification de repos dans l'API de repos Phil Sturgeons, mais je veux seulement l'authentification pour certaines méthodes dans l'API REST.méthode d'authentification spécifique dans Phil Sturgeons php codeigniter reste api

Je souhaite que certaines de mes méthodes soient accessibles à tout le monde sans aucune authentification, et que d'autres ne soient accessibles qu'aux administrateurs/personnes authentifiées.

In .net Je peux simplement définir un attribut [RequiresAuthentication] sur les méthodes d'un service web, y a-t-il quelque chose de similaire que je peux faire avec Rest PHP dans CodeIgniter?

Ou le contrôleur spécifique serait bien aussi.

+0

Avez-vous regardé la version la plus récente sur GitHub? Vous pouvez utiliser des clés d'API pour spécifier des niveaux d'autorisation pour des méthodes spécifiques, de sorte que certaines peuvent être publiques et d'autres privées. –

+0

Salut Phil - merci beaucoup d'avoir remarqué - je ne dois pas être complètement conscient de la façon d'utiliser cette fonctionnalité. J'ai essayé de faire une recherche pendant une heure, mais je n'arrive pas à trouver de documentation sur la façon d'utiliser la fonction apikey. Est-ce que le repos est spécifique à api ou une fonctionnalité de codeigniter général? Pouvez-vous donner un exemple très court de la façon dont j'exigerais que les utilisateurs se connectent pour utiliser des méthodes spécifiques, tout en n'ayant aucun login sur d'autres ou pointant vers une documentation? J'apprécie vraiment votre travail, cela m'a beaucoup aidé. – Jakob

+0

Pas de problème, je suis abonné à #codeigniter ici. Je n'ai pas eu l'occasion de documenter cela (un client m'a payé pour écrire le code, mais pas les docs ;-)) mais c'est assez facile. Regardez le fichier de configuration rest.php pour obtenir le schéma d'exemple pour les clés api. Ensuite, vous pouvez simplement définir des méthodes spécifiques avec la propriété $ methods protégée. Si vous regardez dans le contrôleur de clés d'exemple, vous devriez avoir l'idée. –

Répondre

3

« philsturgeon Phil Sturgeon Pourquoi les gens posent des questions au sujet de mon code sur StackOverflow et forums au hasard au lieu de me demander? »

Allez demander à Phil Sturgeon.

+0

thx. À ma décharge, je dirai que j'ai passé du temps à essayer de trouver des solutions. c'est dans le http://codeigniter.com/forums/viewthread/159098/#766632 peu concluants dans lequel Phil participe lui-même. Ce qui m'amène à croire que peut-être un fil dans un autre endroit pourrait être une bonne idée. – Jakob

+0

Hé, merci qui que ce soit.Vous avez déjà plus de réputation que beaucoup d'autres membres;) Ce fil est mort comme l'utilisation Digest pour la protection avancée de l'api devient un âne. L'utilisation des touches est beaucoup plus gérable. –

2

Bonjour Jakob :) Ce que vous essayez de faire est un peu compliqué lorsque Phil Sturgeons reste API Controller ne supporte que le réglage de la méthode d'authentification globalement. Pour régler globaly vous modifiez cette ligne dans le fichier de configuration de repos:

$config['rest_auth'] = ''; 

J'ai une théorie non vérifiée si: Pour régler ce paramètre par contrôleur assurez-vous que le paramètre dans le fichier de configuration est comme ci-dessus (vide) et ajoutez ce constructeur au contrôleur que vous souhaitez spécifier la méthode d'authentification pour:

function __construct() 
{ 
    $this->load->config('rest'); 
    //$this->_prepare_basic_auth(); //Uncomment to use basic 
    //$this->_prepare_digest_auth(); //Uncomment to use digest 
    parent::Controller(); 
} 
+0

Ouais j'avais essayé une telle méthode moi-même, mais peu importe ce que je reçois: Erreur fatale: Appel à la méthode privée REST_Controller :: _ prepare_digest_auth() Il semble que je ne peux pas appeler cette méthode de l'enfant – Jakob