Я разрабатываю мобильное веб-приложение, используя Sencha Touch 2.0.0.RC , но я не думаю, что моя проблема связана с этой платформой.
Вот рабочий процесс:
При запуске загружается app.js и проверяется, существует ли токен в локальном хранилище:
launch: function() {
if (localStorage.getItem('myToken')) {
Ext.create('MyApp.view.Viewport');
}
else{
Ext.create('MyApp.view.Login');
}
}
Поскольку я загружаю приложение в первый раз, токена нетнайдено, поэтому создается представление входа в систему.
В контроллере login.js функция submitLoginForm получает значения формы и отправляет запрос ajax в API отдыха:
submitLoginForm: function () {
var formValues = this.getLoginForm().getValues();
Ext.Ajax.request({
scope: this,
url: 'http://mydomain.com/api/login/token',
method: 'POST',
params: formValues,
success: function (response) {
var result = Ext.JSON.decode(response.responseText);
if (result.success) {
localStorage.setItem('myToken', result.token);
var viewport = Ext.create('MyApp.view.Viewport');
this.getLoginForm().setHidden(true);
viewport.show();
}
else{
Ext.Msg.alert('Error', 'Bad username or password');
}
},
failure: function () {
//
}
});
}
Когда имя пользователя и пароль верны, возвращается токен, который я сохраняю в localStorage.После этого я создаю и показываю другое представление ( viewport.js ), которое использует токен для доступа к API:
store: {
//...
proxy: {
//...
url: 'http://mydomain.com/api/controller/function/?token=' + localStorage.getItem('myToken')
}
}
В этот момент URL-адрес выглядит следующим образом:
http://mydomain.com/api/controller/function/?token=null&...
Но когда я обновляю свой браузер, все в порядке, и токен возвращается:
http://mydomain.com/api/controller/function/?token=tokenValue&...
Я также могу полностью закрыть свой браузер, открыть его снова и получить доступ ко всему моему приложению беззапрашивается логин.