Разработка сессии заканчивается после запроса ExtJs ajax - PullRequest
0 голосов
/ 31 октября 2011

Я использую Разработать с Рельсы 3.0.6 и ExtJS 4.0.6 . Сессия разработки завершается после каждого запроса AJAX от ExtJ.

Я прошел по ссылкам, указанным здесь и здесь , но не повезло. Что может быть возможным обходным путем для того же?

P.S: здесь указан код уже присутствует в rails.js в rails 3.0.6.

1 Ответ

1 голос
/ 02 ноября 2011

В прошлом я выполнял аутентификацию с использованием заголовков аутентификации HTTP.

Вот несколько грубых шагов, которые необходимо выполнить:

В config / initializer / devise.rb установите http_authenticatable опция конфигурации для true.

config.http_authenticatable = true

Тогда в вашей панели входа в ExtJS ваша форма будет выглядеть примерно так:

var values = form.getValues();
var encodedCredentialsFromFormFields = Base64.encode(values['username'] + ':' + values['password']);

form.submit({
  url: '/users/sign_in',
  headers: {
    'Accept': 'application/json',
    'Authorization': 'Basic ' + encodedCredentialsFromFormFields
  },
  failure: function(form, action) {
    if (action.response.status === 401) { // Unauthorized
      console.log('sign in unsuccessful');
    } else if (action.response.status === 201) { // Created (as in new session created by Devise)
      console.log('sign in successful');
      if (! Ext.Ajax.defaultHeaders) {
        Ext.Ajax.defaultHeaders = {}
      }
      Ext.Ajax.defaultHeaders['Authorization'] = 'Basic ' + encodedCredentialsFromFormFields;
    } else {
      console.log('failed with status: ' + action.response.status);
    }
  }
});

Переменная encodedCredentialsFromFormFieldsСтрока в кодировке Base64 в форме «имя пользователя: пароль».Обратите внимание на двоеточие (:) между именем пользователя и паролем.Я обнаружил, что библиотека Base64 из http://www.webtoolkit.info/javascript-base64.html хорошо работает.

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