2009-07-13 6 views
0

J'ai la structure reposant suivante:Quelle est la manière reposante d'implémenter une fonctionnalité de mot de passe oublié?

  • Ma page de connexion utilise la session/nouvelle action
  • Ma page d'inscription utilisateurs/nouvelle action
  • Ma page logout utilise la session/détruire l'action
  • mon processus de registre utilise les utilisateurs/créer une action

J'ai besoin plus d'actions pour 3:

  • J'ai oublié mon mot de passe Page
  • Démarrer oublié action mot de passe (envoyez un courriel)
  • mot de passe de réinitialisation basé sur jeton

D'où ces 3 actions inscrivent dans un monde reposant?

Pour clarifier:

Je sais que je peux créer toutes les actions sur mes contrôleurs de session existants et de l'utilisateur (. Par exemple un reset_password obtenir une action ou une action post start_reset_password) il ne fonctionne tout simplement assis pas vraiment juste, il semble que je J'essaie de faire fonctionner ces contrôleurs trop.

Répondre

0

Je fini par créer un nouveau contrôleur appelé forgotten_passwords, pour contrôler le processus

  • forgotten_passwords - nouvelles: cartes à j'ai oublié ma page de mot de passe
  • forgotten_passwords - créer: cartes pour commencer oublié l'action de mot de passe (envoyer email avec jeton)
  • forgotten_passwords - montrent: cartes à la fin du processus (une page où l'utilisateur voit son nouveau mot de passe)

I suis assez content de ce design. Je pense qu'il a appelé à un nouveau contrôleur.

+0

C'est un peu ridicule. Une fonction de récupération de mot de passe oublié est plus adaptée à RPC, pas à REST. Donc, ne vous inquiétez pas tellement à propos de l'ancrage. – aehlke

2

REST n'est pas de la magie noire. Déterminez quels sont vos objectifs techniques pour ces pages, puis choisissez les bons verbes pour les accompagner.

J'ai oublié ma page de mot de passe: essentiellement une forme statique, non? Vous voulez que ce soit cachable. Obtenez sur n'importe quelle URL que vous voulez.

Envoyer un e-mail: action coûteuse que vous ne voulez pas répéter et que vous voulez exécuter à chaque fois que l'utilisateur le demande: POST ou PUT sur l'URL que vous voulez. Heck, vous pourriez faire la même chose que l'URL ci-dessus si vous le souhaitez, mais je ne vois pas un besoin particulièrement urgent de le faire.

Réinitialiser le mot de passe basé sur le token: Je considérerais plutôt l'implémentation comme un login-to-token, mais si vous allez le faire à votre façon, cela aura des conséquences sur le serveur et devrait donc POST ou PUT.

+0

Je suppose qu'il y a une bataille entre, wack tous les verbes et les actions sur vos contrôleurs dont vous avez besoin pour faire avancer les choses et, gardez vos contrôleurs simples et seulement les verbes magiques 7. –

Questions connexes