2012-12-08 21 views
8

W mojej aplikacji rails używam gem devise do zarządzania użytkownikami. Używam klejnotu mobile_fu do oddzielania użytkowników pochodzących od różnych użytkowników.Jak zalogować się automatycznie za pomocą urządzenia po rejestracji?

Co chcę osiągnąć tutaj jest:

  1. Jeśli użytkownik otworzy moją stronę z urządzenia mobilnego będzie wyodrębnić jego MSISDN numer nagłówka czytanie to już jest zrobione
  2. Jeśli liczba MSISDN przypada w konkretnej serii, a następnie chcę automatycznie zalogować tego użytkownika na moją stronę, aby nie musiał wypełniać formularza sign_in.

Jak mogę to osiągnąć?

Odpowiedz

4

Musisz:

1) Rejestracja użytkownika na stronie internetowej devise. 2) Zaloguj się do użytkownika.

Dla opcji 1, można zrobić coś takiego:

user = User.find_by_msisdn(params[:msisdn]) 
if user.nil? 
    user = User.create(field_1: value1, field_2: value2)  
end 

sign_in(user) 

redirect_to after_sign_in_path(user) 

rzeczy mieć na uwadze, pierwsza linia próbuje znaleźć dla użytkownika, w drugim wierszu, jeśli nie można znaleźć użytkownika, od razu tworzy użytkownika, następnie sign_in użytkownika i ostatecznie przekierowuje użytkownika do miejsca, w którym powinien się on udać po zalogowaniu.

+0

Próbowałem tego, ale po przekierowaniu na inną stronę użytkownik nie jest już zalogowany. Zaraz po sign_in (użytkownik) są dane w current_user i user_signed_in? zwraca true. Jednak user_signed_in? zwraca wartość false, gdy kieruje się do różnych stron w witrynie. Jakieś pomysły? – user2974739

+0

user_session jest puste. Zakładam, że ma to coś wspólnego z tym. Wszelkie sugestie dotyczące ustawiania sesji użytkownika? – user2974739

+1

'after_sign_in_path' zmienia nazwę na' after_sign_in_path_for'. – artificis

Powiązane problemy