Обновление
Небольшое обновление: у Devise больше нет authentication_token
, поскольку его реализация была сочтена слишком небезопасной.Хорошей альтернативой является предложение Брайана Отона .
Краткое изложение его метода заключается в том, что он генерирует ключ authentication_key AND authentication_secret в отдельной модели.Затем вы аутентифицируетесь, посылая свой ключ и секрет, если совпадение найдено, вы временно входите в систему как пользователь.
В контроллере приложения это выглядит так:
class ApplicationController < ActionController::Base
before_filter :authenticate_from_token
protected
def authenticate_from_token
if current_token.try :authenticatable
sign_in token.authenticatable, store: false
end
end
def current_token
AuthenticationToken.find_authenticated({
secret: (params[:secret] || request.headers[:secret]),
secret_id: (params[:secret_id] || request.headers[:secret_id]),
})
end
end
authenticatable
токена в этом случае является моделью пользователя или любой другой вещью, которая была сделана аутентифицируемой (токены полиморфны).Как вы можете видеть, его легко настроить для работы с Devise.
Мне очень нравится этот метод, и он реализован в недавнем API.Читайте об этом на его веб-сайте.
Старый ответ
Устаревший ответ, сохраненный для ссылки на более старые версии Devise: Devise имеет столбец authentication_token, который я могу использовать для аутентификации пользователя,У меня может быть метод API входа в систему, с помощью которого я также отправлю имя пользователя и пароль, затем верну токен и сохраню его локально, чтобы подписать все остальные мои вызовы.По сути, это система cookie, но она напрямую поддерживается Devise.
Кроме того, я могу заново генерировать токен при каждом вызове или при каждом «сеансе».