当前位置: 首页 > 面试题库 >

如何让浏览器提示保存密码?

史钊
2023-03-14
问题内容

嘿,我正在使用一个具有如下登录对话框的Web应用程序:

  1. 用户点击“登录”
  2. 登录表单HTML随AJAX一起加载,并在第DIV页上显示
  3. 用户在字段中输入用户/密码,然后单击提交。不是<form>-用户/密码通过AJAX提交
  4. 如果用户/密码正确,则页面将在用户登录后重新加载。
  5. 如果用户/密码不正确,则不会重新加载页面,但DIV中会显示错误消息,并且用户可以重试。

问题出在这里:浏览器从不提供通常针对其他站点的“保存此密码?是/从不/不立即”提示。

我尝试用“ autocomplete =’on’” 包装<div>in <form>标签,但这没什么区别。

是否可以让浏览器提供存储密码的功能而无需大量修改我的登录流程?

谢谢埃里克

ps添加到我的问题中,我肯定是与存储密码的浏览器一起工作,而且我从未单击过“从不访问此站点”
…这是一个技术问题,浏览器没有检测到它是登录表单,而不是操作员错误:-)


问题答案:

我找到了这个问题的完整解决方案。(我已经在Chrome 27和Firefox 21中对此进行了测试)。

有两件事要知道:

  1. 触发“保存密码”,然后
  2. 恢复保存的用户名/密码

1.触发“保存密码”:

对于 Firefox 21 ,当它检测到存在包含输入文本字段的表单并且提交了输入密码字段时,将触发“保存密码”。所以我们只需要使用

$('#loginButton').click(someFunctionForLogin);
$('#loginForm').submit(function(event){event.preventDefault();});

someFunctionForLogin()执行ajax登录并重新加载/重定向到登录页面,同时event.preventDefault()由于提交表单而阻止了原始重定向。

如果仅使用Firefox,上述解决方案就足够了,但在Chrome 27中不起作用。然后,您将询问如何在Chrome 27中触发“保存密码”。

对于 铬27 ,“保存密码”被触发 后, 它被提交包含输入文本字段的形式重定向到页面 属性名=“用户名” 和密码输入字段
属性名=“密码” 。因此,由于提交表单,我们无法阻止重定向,但是我们可以在完成ajax登录后进行重定向。
(不幸的是,如果您希望ajax登录名不重新加载页面或不重定向到页面,则我的解决方案不起作用。) 然后,我们可以使用

<form id='loginForm' action='signedIn.xxx' method='post'>
    <input type='text' name='username'>
    <input type='password' name='password'>
    <button id='loginButton' type='button'>Login</button>
</form>
<script>
    $('#loginButton').click(someFunctionForLogin);
    function someFunctionForLogin(){
        if(/*ajax login success*/) {
            $('#loginForm').submit();
        }
        else {
            //do something to show login fail(e.g. display fail messages)
        }
    }
</script>

类型为’button’的Button将使单击按钮时不提交表单。然后,将功能绑定到按钮以进行ajax登录。最后,调用$('#loginForm').submit();将重定向到登录页面。如果登录页面是当前页面,则可以将“
signIn.xxx”替换为当前页面以进行“刷新”。

现在,您会发现Chrome 27的方法也可以在Firefox 21中使用。因此,最好使用它。

2.恢复保存的用户名/密码:

如果您已经将loginForm硬编码为HTML,那么在loginForm中恢复保存的密码将没有问题。
但是,如果使用js /
jquery动态创建loginForm,则保存的用户名/密码将不会绑定到loginForm,因为保存的用户名/密码仅在文档加载时才绑定。
因此,您需要将loginForm硬编码为HTML,并使用js / jquery动态移动/显示/隐藏loginForm。

备注: 如果您进行ajax登录,请不要autocomplete='off'以标签形式添加

<form id='loginForm' action='signedIn.xxx' autocomplete='off'>

autocomplete='off' 将使用户名/密码恢复到loginForm失败,因为您不允许它“自动完成”用户名/密码。



 类似资料:
  • 问题内容: 我试图使用在stackoverflow上发现的不同方法来保存.pdf文件,但是,我总是会损坏它。当我使用记事本打开损坏的文件时,我得到以下信息: 后来,我尝试使用@BalusC提供的答案从浏览器中保存文件。这个解决方案非常有帮助:我能够摆脱这些问题。但是,它也会产生损坏的.pdf。但是当我用记事本打开它时,它是完全不同的。但是,不再有登录问题: 我还有什么其他选择? PS:当我尝试使用

  • 问题内容: 我需要停止浏览器存储用户名和密码值,因为我正在处理包含更多安全数据的Web应用程序。客户要求我这样做。 我尝试了HTML表单和密码字段中的属性。但它无法在最新的浏览器(例如Chrome 55,Firefox 38+,IE 11等)中运行。 最好的解决方案是什么? 问题答案: 感谢您给我回复。我点击了以下链接 禁用浏览器的“保存密码”功能 我通过仅在输入中添加&属性来解决此问题,如下所示

  • 现在如何将此保存到浏览器。

  • 问题内容: 我有一些登录信息,比如说用户名,登录电子邮件ID和位置。 即使在用户注销并关闭窗口后,我也希望将此信息保留在浏览器中。 这样,当用户在注销或会话期满后返回时,Web应用程序将填写客户端用户名,并要求用户输入密码。 我要求的最好的例子是Google登录。! 目前,我只使用会话,不使用cookie。 有什么可能的解决方案? 问题答案: LocalStorage被认为是在浏览器中永久存储值的

  • 我正在做一个画布绘制项目。我将画布转换为图像,然后将该图像另存为“”。巴布亚新几内亚'。我必须右键单击图像并选择“将图像另存为”选项。但我想通过一个按钮提供这个选项。当我点击按钮时,它应该被保存。 任何例子或想法都将不胜感激。 这是一个js函数,用于将画布转换为png。

  • 我第一次使用JSON Web令牌(JWT)。我正在制作一个节点。js应用程序。我想使用JWT进行身份验证。根据文档,我将JSON令牌返回到前端。 但是我不知道如何将这个JSON令牌保存到我的浏览器头中,这样它就不会丢失,并随头一起再次发送到后端。如何将它保存在我的浏览器存储中,并在每次向后端发送请求时将其添加到请求头中?