Разработать: сбросить токен после выхода - PullRequest
0 голосов
/ 24 июня 2011

Я использую один токен доступа и хочу сбросить его при выходе.

Возможным способом было бы вызвать reset_authentication_token!в after_token_authentication в модели, но тогда мне нужно будет знать, что в модели это действие sign_out.

Как мне добиться этого лучше?Я использую устройство 1.3.4

Спасибо.

Ответы [ 3 ]

0 голосов
/ 25 июня 2011

Просто переопределите «after_sign_out_path_for» в контроллере приложения и сбросьте там свой токен. Не нужно писать свой собственный SessionController (хотя, как упоминал Натан, он очень прост).

Вот метод, который вы должны использовать: http://rubydoc.info/gems/devise/1.3.4/frames - (Объект) after_sign_out_path_for (resource_or_scope)

Метод, используемый контроллером сеансов для выхода из системы. Вы можете перезаписать его в ApplicationController, чтобы обеспечить настраиваемую ловушку для настраиваемой области. Обратите внимание, что в отличие от after_sign_in_path_for этот метод получает символ с областью действия, а не ресурс.

По умолчанию это root_path.

ура

0 голосов
/ 11 марта 2013

Так как у меня была такая же проблема. Вот что я нашел:

Devise Wiki: пример простой аутентификации токена

Devise Wike: простые ссылки для аутентификации токена

В моем SessionsController

  def destroy
    token_was_removed = remove_current_users_token_if_json_request

    redirect_path = after_sign_out_path_for(resource_name)
    signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
    set_flash_message :notice, :signed_out if signed_out && is_navigational_format?

    respond_with resource do |format|
      format.html { redirect_to static_pages_login_path }
      format.json {
        if token_was_removed
          render :status=>200, :json=>{:message => "Logout successful." }
        else
          render :status=>401, :json=>{:message => "Logout failed. Invalid token or some internal server error while saving." }
        end
      }
    end
  end



  def remove_current_users_token_if_json_request
    #remove the users authentication token if user is logged in
    if current_user and request.format.json?
      current_user.authentication_token = nil
      return current_user.save
    else
      return false
    end
  end
0 голосов
/ 24 июня 2011

Вот действительно хорошее сообщение в блоге , которое я использовал для добавления / сброса токенов.

Это, конечно, простой пример, и ссылки, которые он вызывает в представлении, предназначены для создания / уничтожения токенов. Однако эти же пути могут использоваться в ваших контроллерах для того же эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...