2013-03-19 5 views
1

Недавно я обновил приложение и нажал на герою, одна из улучшенных функций изменила мой идентификатор сеанса с идентификатора пользователя на безопасный шестнадцатеричный. Как только я нажал, я заметил, что прозревающие пользователи больше не могут войти в систему. Я проверил консоль heroku и выяснил, что их токен аутентификации был установлен в нуль, который, как я полагаю, ожидается. мои вопросы:Вручную установить токен аутентификации?

Есть ли способ установить токен аутентификации для пользователей до обновления? Могу ли я написать какой-то цикл для создания этого токена для пользователей до обновления, чтобы это не повторилось?

или мне нужно просто стереть базу данных и позволить пользователям зарегистрироваться еще раз.

ура.

+0

может ли кто-нибудь помочь? – 2013-03-19 11:25:02

ответ

2

Решение от Remember Me & Reset Password раздел комментариев.

УПРАЖНЕНИЕ НА ВАШЕГО РАЗВИТИЕ БАЗЫ

Я стараюсь это некоторое время назад, и работать он будет обновлять маркер проверки подлинности для всех пользователей, если generate_token этого имя методы и auth_token этого поля БД где вы храните токен. Вы можете мыслить с помощью инструкции if внутри задачи, если вам просто нужно изменить ее для пользователей, у которых на данный момент нет токена.

создать файл в Lib/задач/rebuild_token_auth.rake:

namespace :user do 
    desc "Rebuild Auth-Tokens" 
    task :rebuild_auth_token => :environment do 
    User.transaction do 
     User.all.each { |u| 
     u.generate_token(:auth_token) 
     u.save! 
     } 
    end 
    end 
end 

вызов это так:

rake user:rebuild_auth_token 

В своем примере generate_token выглядит следующим образом:

class User < ActiveRecord::Base 
def generate_token(column) 
    begin 
    self[column] = SecureRandom.urlsafe_base64 
    end while User.exists?(column => self[column]) 
end 
end 
+0

Работал на 100%, вы меня много спасли. Большое спасибо. – 2013-03-19 13:58:03

Смежные вопросы