Dans ton logout tu vide bien la session ?
Salut,
j'ai fais un frontend avec angulaJs et un Backend avec cakePhp pour l'api REST
j'ai un problème au niveau de l'authentification.
J'ai choisis une auth Basic dans CakePHP, donc dans l'appController
Dans app.js
Dans UsersController.php
Si j'enlève la ligne
ça fonctionne mais si je me connecte et que je me déconnecte puis que je me reconnecte avec des champs vide, la connexion fonctionne... Normal d'après ce que j'ai compris puisque l'authentification reste en session
Donc si je remets cette ligne, ça ne fonctionne plus
je précise que j'ai bien les bonnes valeurs dans
$_SERVER['PHP_AUTH_USER'] et
$_SERVER['PHP_AUTH_PW']
Merci pour vos conseils
pour info j'ai suivi ce tuto: https://github.com/hantsy/angularjs-cakephp-sample/wiki
Zil...
8 réponses
Dans logout, j'ai seulement mis
ça vide la session ? ou faut mettre autre chose?
Essaie peut être de rajouter un $this->Session->destroy() ?
Bonjour,
encore une fois, REST est une architecture qui se veut stateless (sans état) donc pas de session côté serveur ...
Ici, tu ne fais donc pas du full REST.
Ce n'est pas grave du tout mais je le précise sur ce post vu que c'est pas la première fois que je vois le terme REST associé à une session...
OK, +1 pour le pas full REST
Ce serait quoi la solution alors ?
Même avec le sessionDestroy, ça fait la même chose... j'arrive à me connecter avec un user et password vide juste après une déconnexion
Le problème avec le basic authentification c'est que le navigateur risque de retenir ta connexion tant qu'il est ouvert.
L'idée est alors de forcé un code 401 dans les headers pour forcer la demande de user, password , mais je ne suis pas sûr que tous les navigateurs y soient sensibles. Bref, la déconnexion est galère avec ce type d'authentification.
En ce qui concerne les authentifications "sateless", ils existent plusieurs manière de le faire :
-
A la connexion, un token est envoyé à l'utilisateur et stoké en base, ce token transite alors à chaque requête vers le serveur qui vérifie sa validité en base. On peut lui ajouter une date d'expiration etc...
-
Utiliser oAuth, oAuth2
-
Utiliser SAML (pas conseillé dans ton cas, c'est lourd et plutôt adapté au protection de webservice SOAP , le standard ws-security permettant facilement de l'encapsuler)
L'idée générale de ces authentifications sans état que l'on peut du coup étendre à la SSO est de faire porter l'authentification au navigateur via un token , un jeton de sécurité etc... On retrouve ainsi un service provider devant l'applicatif serveur chargé d'effectuer cette vérification.
Dans ton cas d'utilisation de cakephp, cette vérification de jeton valide, de token peut être porté par le beforefilter.
Ok, merci beaucoup, je vais regarder ça
Salut,
je continue l'apprentissage... mais ce n'est pas gagné
J'ai installé le plugin cakephp-oauth-server
J'arrive à créer une table clients avec du style
Quand un utilisateur s'enregistre, ça crée un champ du style
ensuite j'arrive à me connecter en passant par l'url du style
ça m'envoit bien sur la page d'accueil avec un code
Mais dès que je clique sur un lien, j'ai droit à un beau
De plus dans un view (default.ctp) j'avais un
qui m'affichait du contenu pour les utilisateurs connecté. Bien sûr maintenant ça ne fonctionne plus puisque l'user n'est plus en session. Donc par quoi puis-je remplacé ce test ?
Merci si vous avez des pistes, exemples
Zil...