No_Time
@No_Time

Как сделать несколько сессий для одного пользователя в Devise(:database_authenticatable)?

Всем привет!


Разрабатываю апишку для рельсо-приложения(бэкэнд для мобильного клиента), в котором авторизация издавне происходила Devise'ом. С веб версией все понятно, давно работает как часы — у пользователя может быть несколько активных сессий на разных компах. Но с мобильной авторизацией все видимо плохо, по крайне мере у меня. Есть базовая модель User:

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



В user_api_controller'е соответственно есть строки атворизации:

before_filter :authenticate_user!, except: [ :new, :sign_in ]


def sign_in

		if params[:user][:email].blank? and params[:user][:name].blank?
			return render status: 404, json: { error: "You must specify email or name"}
		end
		if params[:user][:email]
			user = User.find_by_email(email: params[:user][:email].downcase)
		elsif params[:user][:name]
			user = User.where("lower(name) = ?", params[:user][:name].downcase).first
		end

		if user.blank?
			return render status: 404, json: { error: "User not found" }
		end

		if user.valid_password? params[:user][:password]
			user.reset_authentication_token!
			return render status: 200, json: { token: user.authentication_token }
		else
			return render status: 401, json: { error: "Invalid password" }
		end

	end



Все хорошо, но у пользователя может быть только одна сессия, те я захожу с одного клиента(с 5ого айфона конечно) — все оки захожу под тем же именем с другого — на первом соответственно токен становится невалидным и все плохо. Ну оно и понятно, в структуре бд учитывается, что у юзера только идин токен=( Можно ли данную ситуацию исправить с помощью рельсовой магии? Или лучше написать отдельный модуль, независимый от devise'a? Может быть можно devise'у как-нибудь редиску всунуть для хранения токенов для апи?


Может быть знаете хорошие готовые gem'ы для апи авторизации?


заранее спасибо!
  • Вопрос задан
  • 3252 просмотра
Пригласить эксперта
Ответы на вопрос 1
@idem2n
Не нужно никакой магии, достаточно реализовать свою стратегию для devise.
Вот пример с redis.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы