2010-05-25 3 views
2

Je pense que je manque juste quelque chose d'évident. J'envoie à un utilisateur un token périssable intégré dans un lien. Ils cliquent dessus et reviennent sur le site. Je veux les connecter automatiquement --- authentifié par leur jeton périssable, pas le mot de passe. (Je ne construis pas une application bancaire).Comment faire pour que AuthLogic ignore la validation du mot de passe?

Cela semble être simple, mais tous les exemples que j'ai trouvés nécessitent un mot de passe. Comment puis-je ignorer complètement cela? Lorsque j'essaie d'obtenir UserSession.create pour fonctionner, il signale une erreur de validation et ne crée pas la session utilisateur. Quel est le moyen de contourner cela?

@user = User.find_by_perishable_token(params[:token]) 
if @user 
    if !current_user 
    # skip sign-in 
    UserSession.create!(@user.email) 
    # => error "You did not provide any details for authentication." 
    ... 

J'ai longuement recherché sur Google, mais je n'ai pas trouvé la réponse.

Répondre

1

Est-ce que UserSession.create ne prend pas un objet utilisateur comme premier argument? Si oui, vous ne pourriez pas faire juste:

UserSession.create(User.find_by_perishable_token(params[:token])) 
@current_user_session = UserSession.find 

Ou est que lorsque vous utilisez des problèmes?

+0

Vous avez raison. J'utilisais la méthode 'current_user' écrite sur le contrôleur, qui est mise en cache lors d'une requête. Une fois que je suis passé à 'UserSession.find', tout était bon. – ndp

Questions connexes