Nenhuma das opções aqui (preenchimento automático, data lpignore etc.) impediu o LastPass de preencher automaticamente meus campos de formulário, infelizmente. Adotei uma abordagem mais arraigada ao problema e defina de forma assíncrona os name
atributos de entrada via JavaScript. A seguinte função dependente de jQuery (chamada do manipulador de eventos onsubmit do formulário) fez o truque:
function setInputNames() {
$('#myForm input').each(function(idx, el) {
el = $(el);
if (el.attr('tmp-name')) {
el.attr('name', el.attr('tmp-name'));
}
});
}
$('#myForm').submit(setInputNames);
No formulário, eu simplesmente usei tmp-name
atributos no lugar dos name
atributos equivalentes . Exemplo:
<form id="myForm" method="post" action="/someUrl">
<input name="username" type="text">
<input tmp-name="password" type="password">
</form>
Atualização 2019-03-20
Ainda encontrei dificuldades com o exposto acima, devido ao AngularJS, dependendo dos campos do formulário com name
atributos para que o ngMessages apresentasse corretamente as mensagens de erro de validação de campo.
Por fim, a única solução que encontrei para impedir que o LastPass preencha os campos de senha no meu formulário de Alteração de senha foi:
- Evite usar
input[type=password]
totalmente, E
- para não ter 'senha' no nome do campo
Como preciso enviar o formulário normalmente no meu caso, ainda empreguei minha solução original para atualizar os nomes dos campos 'just in time'. Para evitar o uso de campos de entrada de senha, achei que esta solução funcionava muito bem.
type="hidden"
vez de ocultá-lo com CSS