2011-12-14 15 views
8

De acuerdo, ¿cómo accedo al token de autenticación de un usuario? Cuando una llamada ajax inicia una sesión de usuario, necesito poder obtener un token de autenticación del usuario. He tratado de hacer las cosas como la adición: token_authenticable en mi modeloIdentificar token de autenticación

devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 

añadir también atributos de nombres como: authentication_token, y: authenticity_token a attr_accessible. Pero cada vez que intento llamar o authentication_token este authenticity_token del usuario con user.auth ... tengo errores como este

NoMethodError: undefined method `authentication_token' for #<User:0x000001016b1140> 

Lo sentimos, necesito conseguir este token para enviar con mis llamadas ajax, (el último proyecto en el que trabajé i tenía una solución increíblemente BOOTLEG donde legado estaba casi arrancada de la aplicación, sólo necesito esta maldita token)

+0

tuve un problema similar, avíseme si encuentra una solución, no hay material de lectura bueno disponible – Kevin

+1

token_authenticatable se ha depreciado como se ve aquí: http://stackoverflow.com/questions/18931952/devise-token-authenticatable- deprecated-what-is-the-alternative – dane

Respuesta

8

este se fija mediante la inclusión del módulo de :token_authenticatable en el modelo devise usuario:

devise :token_authenticatable, ... 

También el método se define en la clase en sí, no en una instancia. Llámalo como User.authentication_token.

Ver aquí: https://github.com/plataformatec/devise/blob/master/lib/devise/models/token_authenticatable.rb#L61-63.

+0

nice, lo siento si sueno un poco lento, pero para verificar quién es un usuario en particular, debería hacer un atributo llamado auth_token y decir user.auth_token = User.authentication_token. Luego, use esto para verificar quién es realmente un usuario. porque parece que el diseño ya está haciendo que el parámetro se envíe cada vez que cambio una vista, pero no puedo hacerlo manualmente con una llamada ajax – jack

+0

El método authentication_token existe tanto en la instancia como en la clase. Utilice el método de instancia user.reset_authentication_token! para configurar el token (básicamente hace user.authentication_token = User.authentication_token), el dispositivo debe manejar la parte de verificación real: "mysite.com/user/1/edit?auth_token=#{user.authentication_token}" – Homan

Cuestiones relacionadas