Доступ к текущей информации о пользователе с помощью Janrain и Ruby on Rails

Я использую Janrain для обработки пользовательских сеансов в моем приложении Ruby on Rails. Похоже, он работает, однако я не знаю, как определить, вошел ли пользователь в систему или нет, или получить доступ к информации о текущем пользователе. Создается ли переменная сеанса после входа пользователя?


person Dan Palumbo    schedule 02.09.2012    source источник


Ответы (2)


Предполагая, что вы имеете в виду Janrain Social Login (Engage), как только пользователь аутентифицируется через Social Provider, виджет получает токен Janrain OAuth, действительный в течение 60 минут. Вы можете использовать этот токен для получения данных профиля пользователя через эту конечную точку API: (https://{your-engage-domain.com}/api/v2/auth_info).

Janrain Social Login не ведет журнал в данных сеанса, связанных с состоянием. Это просто облегчает аутентификацию и нормализует получение данных профиля пользователя от нескольких поставщиков аутентификации. Как только происходит успешное событие аутентификации, ваш сервер должен проверить токен аутентификации, а затем установить любую форму работы, связанную с сеансом авторизации.

Большинство социальных провайдеров возвращают токены доступа, действительные в течение 30–60 дней.

person PBICS    schedule 24.12.2014

попробуйте переменную 'current_user', она работает в большинстве библиотек аутентификации rails, например:

#in the erb file: 
<% current_user = session[:user_id] %>

# or in the rb file: 
class MusicController < ApplicationController
  before_filter :authenticate_user! # just like devise

  def index
    # same methods and api as devise.
    return if signed_in? and current_user.email
  end
end

# put this method in application_controller.rb
def current_user
  @current_user ||= User.find_by_id(session[:user_id])
end

дополнительные сведения см. в этом примере: https://github.com/hatem/janrain-engage-demo< /а>

person Siwei    schedule 02.09.2012
comment
Проблема в том, что у меня нет переменной user_id в сеансе. Вы знаете, где это обычно устанавливается? Я посмотрел на ту ссылку, которую вы включили, но я не могу понять это. - person Dan Palumbo; 02.09.2012
comment
Я так не думаю. Если вы использовали гем/библиотеку аутентификации, в сеансе должна быть связанная переменная или объект. пожалуйста, взгляните на документ или вставьте весь соответствующий код или журналы для отладки. - person Siwei; 03.09.2012