J'essaie de créer une fenêtre de connexion simple avec la fonctionnalité très courante 'Se souvenir de moi'. La validation de connexion est faite en style AJAX, ainsi le navigateur ne se souviendra pas de ma saisie.ExtJS: Connectez-vous avec la fonctionnalité 'Se souvenir de moi'
Mon approche consiste à utiliser la fonctionnalité intégrée state
, mais comment l'utiliser me perturbe.
Ext.state.Manager.setProvider(new Ext.state.CookieProvider({
expires: new Date(new Date().getTime()+(1000*60*60*24*7)), //7 days from now
}));
...
{
xtype: 'textfield',
fieldLabel: 'User name',
id: 'txt-username',
stateful: true,
stateId: 'username'
}, {
xtype: 'textfield',
fieldLabel: 'Password',
id: 'txt-password',
inputType: 'password',
stateful: true,
stateId: 'password'
}, {
xtype: 'button',
text: 'Validate',
stateEvents: 'click'
}
Je sais que je dois mettre en œuvre la méthode getState
, mais sur ce composant (je suppose sur les deux champs de texte)? Une autre chose que je ne parviens pas à réaliser est, comment mon événement clic sur le bouton connecté aux propriétés d'état de mes champs de texte?
Très belle analyse et réponse claire! – timdev
D'accord, n'utilisez pas d'état pour cela. En outre, toute validation côté client doit également être effectuée côté serveur car toute validation JS peut être facilement contournée par un utilisateur malveillant avec Firebug. –
Merci beaucoup pour votre réponse élaborée. J'ai abandonné la fonctionnalité AJAX et utilisé votre approche à la place. Il aurait été agréable de pouvoir utiliser l'authentification AJAX, car je peux mettre une fenêtre modale sur mon application et la valider sans avoir à recharger tout le site. – Chau