2010-08-18 8 views
2

J'ai créé une application avec quelques modèles, après cela, j'ai utilisé ACL et créé des ACO pour protéger mon application.CakePHP - combiner ACL avec l'API REST

Maintenant, je voulais ajouter une API RESTful à ma demande, donc je modifié routes.php avec quelque chose comme ça

Router::mapResources('routes'); 
Router::parseExtensions(); 

cela fonctionne aussi bien, par exemple aller http://localhost/myapp/routes.json me donne un objet JSON de mes itinéraires si je suis déjà connecté

shure, quelqu'un ne peut pas faire un login avec un formulaire web quand il utilise mon API, donc je veux savoir s'il est possible d'envoyer les informations de connexion à la demande en utilisant REST Auth Basic (ou Digest) et utilisez l'ACL active dans mon application pour authentifier et montrer l'objet de résultat (ou si c'est faux, envoyer le bon en-tête)

des idées?

si quelque chose ne sait pas, S'IL VOUS PLAÎT laisser un commentaire

i utilisé le nouveau gâteau version php 1.3.3

Répondre

1

Si vous regardez d'autres API à base de services, en général, ils utilisent jeton pour identifier l'utilisateur. Par exemple, s'il y a un nom d'utilisateur matt et qu'il a un jeton 123456, vous pouvez lui donner accès à l'URL http://localhost/myapp/123456/routes.json. Ensuite, dans votre contrôleur, vous pouvez authentifier l'utilisateur en utilisant un jeton.

+0

C'est en effet la solution, cependant, il y a encore un autre problème ici. Où vous connectez-vous manuellement l'utilisateur? Je fais cette vérification, et connecte manuellement l'utilisateur dans AppController :: beforeFilter(), mais le problème est que AuthComponent vérifie la liste de contrôle d'accès avant l'exécution de beforeFilter(). –

0

L'authentification http digest est possible lorsque javascript est utilisé pour gérer le processus d'authentification, les clients non-javascript ayant par défaut le popup standard. Cela ne les dérangera probablement pas.

Infos trouvé à http://www.peej.co.uk/articles/http-auth-with-html-forms.html:

La principale raison les gens à pied de utilisant l'authentification HTTP est qu'ils veulent avoir le contrôle sur l'apparence du formulaire de connexion et la plupart des navigateurs affichent une boîte de dialogue à la recherche terrible . Donc, quel nous avons besoin est un moyen pour les formulaires HTML à transmettre les données d'authentification HTTP lorsqu'il est soumis. La spécification HTML fournit des formulaires HTML pour créer des requêtes et pour envoyer des données URL codées à une URL, mais pouvons-nous le subvertir?

Il est livré avec un avertissement :)

Avertissement: La solution décrite dans cet article est expérimental et peut être un mensonge complet, sachez que votre kilométrage peut /variera.

Questions connexes