Не используйте состояние. Вы храните пароль пользователя в виде простого текста в файлах cookie браузера. Любой, кто имеет доступ к браузеру, может прочитать его, и он отправляется обратно на сервер при каждом запросе.
Надеемся, что вы используете какую-либо форму серверных сеансов и не зависите от информации аутентификации пользователя, присутствующей в каждом запросе для поддержания состояния входа в систему. Если это так, то я рекомендую воспользоваться функцией сохранения пароля, встроенной в большинство современных браузеров, для обработки запоминания пользователя для начальной аутентификации в любом конкретном сеансе.
Чтобы функция сохранения пароля браузера работала, форма аутентификации должна присутствовать в документе при первой загрузке страницы. Кроме того, учетные данные должны быть отправлены с помощью этой формы в традиционной (не AJAX) отправке, которая обновит всю страницу.
Вы можете выполнить эти требования, по-прежнему представляя форму в пользовательском интерфейсе ExtJS, сначала отобразив форму, скрытую в документе, а затем используя возможности ExtJS для управления существующими элементами HTML.
В тексте документа поставить:
<form id="auth-form" action="/url/of/your/login/action" method="POST">
<input id="auth-username" type="text" name="username" class="x-hidden">
<input id="auth-password" type="password" name="password" class="x-hidden">
<input id="auth-submit" type="submit" class="x-hidden">
</form>
Затем в Ext.onReady или во время отображения формы аутентификации создайте панель, в которой используются указанные выше элементы формы:
new Ext.Panel({
el: 'auth-form',
autoShow: true,
layout: 'form',
items: [
{
xtype: 'textfield',
el: 'auth-username',
autoShow: true,
name: 'username',
fieldLabel: 'Username',
anchor: '100%'
},
{
xtype: 'textfield',
el: 'auth-password',
autoShow: true,
name: 'password',
fieldLabel: 'Password',
anchor: '100%'
}
],
buttons: [
{
text: 'Log in',
handler: function() {
Ext.get('auth-submit').dom.click();
}
}
]
});
Точный состав формы может варьироваться. Он может быть встроен в экземпляр Ext.Window или что-то еще. Что важно:
- Поля имени пользователя и пароля используют существующие поля ввода через свойства конфигурации 'el' и 'autoShow'.
- Одна из панелей, содержащих поля, делает то же самое для существующего элемента формы.
- Отправка формы выполняется путем имитации нажатия на существующую кнопку отправки.