Настройка фильтра Devise: authenticate_user, чтобы также проверять токены авторизации - PullRequest
0 голосов
/ 19 марта 2012

Я хочу иметь возможность настроить фильтр: authenticate_user для включения аутентификации пользователя с помощью токена аутентификации. Причина, по которой я не хочу использовать встроенный механизм токенов, заключается в том, что он позволяет использовать только один токен авторизации. Я хочу, чтобы у пользователя было несколько токенов. Придумайте, насколько я знаю, это не поддерживает.

Есть идеи?

1 Ответ

0 голосов
/ 26 марта 2012

Я добавил собственную стратегию, чтобы исправить это:

Warden::Strategies.add(:tokens_authenticatable) do 
  def valid? 
    # code here to check whether to try and authenticate using this strategy; 
    return params.key? :token
  end 

  def authenticate! 
    # code here for doing authentication;
    puts params

    token = Token.where(["token = ?", params[:token]]).first
    puts token
    if (!token.nil?)      
      # if successful, call  
      success!(token.user) # where resource is the whatever you've authenticated, e.g. user;
    else
      # if fail, call 
      fail!("WWAAAAA") # where message is the failure message 
    end
  end 
end

config.warden do |manager|
  # manager.intercept_401 = false
  manager.default_strategies(:scope => :user).unshift :tokens_authenticatable
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...