H5保存和读取登录用户名和密码

本文介绍了一个使用HTML5 localStorage实现登录用户名和密码保存的示例。当用户登录并选择保存密码时,localStorage将保存用户名和密码,下次访问时自动填充。通过JavaScript进行操作,包括获取和设置localStorage数据,以及在页面加载时恢复输入字段的值。当用户取消保存密码,localStorage会移除相应数据。登录成功后,页面会显示相应提示。
1:
实例说明
sessionStorage只能保存临时会话数据
可以使用localStorage对象,长期保存在客户端,直到人工清除为止
1:
localStorage.getItem();//读取
2:
localStorage.removeItem();//移除
例子说明
创建一个登陆界面,当但就按钮后,localStorage会保存登陆时的用户名,如果选中保存密码的复选框
,则保存登陆时的密码,否则清空
HTML代码
<body onload="pageload();">
<!--因为涉及到用户,就要用表单-->
<form id="frmLogin" action="#">
<fieldset>
<legend>用户登录</legend>
    <ul>
    <li class="li_top">
        <span id="spnStatus">eeddd</span><!--显示登录成功的文字-->
        </li>
        <!--用户名-->
        <li>用户:
        <input id="txtName" class="inputtxt" type="text" size="18">
        </li>
        <!--密码-->
        <li>密码:
        <input id="txtPass" class="inputtxt" type="password" size="18">
        </li>
         <li class="li_bot">
        <input id="chkSave"  type="checkbox">
            保存密码?
        </li>
         <li class="li_bot">
        <input name="btnLogin" class="inputbtn" type="button" value="登录" onclick="btnLogin_click();">
           <input name="rstLogin" class="inputbtn" type="reset" value="取消" />
        </li>
    </ul>
</fieldset>
</body>
===============
js代码
<script type="text/javascript">
//获取id的方法
function $$(id){
return document.getElementById(id);
}
//页面加载时调用函数
function pageload(){
var strName=localStorage.getItem("keyName");//用变量代替键名
var strPass=localStorage.getItem("keyPass");
//判断,如果输入的值等于存储的值
if(strName){
$$("txtName").value=strName;
}
if(strPass){
$$("txtPass").value=strPass;
}

}
//单击登录按钮后调用函数
function btnLogin_click(){
var strName=$$("txtName").value;//存储文本框的值
var strPass=$$("txtPass").value;
localStorage.setItem("keyName",strName);
if($$("chkSave").checked){//如果选择保存密码
localStorage.setItem("keyPass",strPass);//系统存储密码,否则移除
}else{
localStorage.removeItem("keyPass");
}
$$("spnStatus").className="status";//把id名转成class,改变样式
var c="登录成功";
$$("spnStatus").innerHTML=c;
alert(c);
}
</script>
=================
css代码
<style type="text/css">
ul{

list-style:none;
padding:0px;
margin:15px 0px 15px 0px;
text-align:center;
}
ul .li_bot{
padding-top:10px;
margin-left:36px;
}
ul .li_top{
padding-bottom:10px;
}
.inputtxt{
border:1px solid #ccc;
line-height:18px;
font-size:12px;
padding-left:3px;
    margin-bottom:5px;
}
/*显示登录成功的界面*/
#spnStatus{
display:none;
border:1px #ccc solid;
width:158px;
background-color:#eee;
padding:6px 12px 6px 12px;
margin-left:2px;
}
.status{

border:1px #ccc solid;
background-color:#eee;
padding:6px 12px 6px 12px;

}
</style>
===========
问题:
为什么显示不出登陆成功的?
解决:
<think>我们正在处理一个关于奇治堡垒机环境下通过Xshell SSH登录并访问目标交换机时遇到二次密码验证的问题。根据用户提供的引用之前的问题,我们需要整合信息来解答。 引用分析: [1] 提到了SSH安全登录,以及如何临时启用telnet(但这不是重点)。重点在于SSH是安全的,而telnet不安全。 [2] 介绍了堡垒机的作用,它比跳板机更先进,提供运维操作管理安全,包括角色管理、授权审批、访问控制、操作审计等。 [3] 提到了文件上传漏洞,但这与当前问题关系不大。 [4] 提到了在传统SSH客户端中执行命令的安全隐患,以及CheungSSH如何通过封装来拦截高危命令。这说明堡垒机或类似系统可能有命令控制功能。 用户问题:在奇治堡垒机环境下,通过Xshell SSH登录堡垒机并访问目标交换机时,如何处理带有二次密码验证的情况。 背景:二次密码验证(也称为双因素认证,2FA)通常是在输入用户名密码后,再输入一个动态令牌(如手机APP生成的6位数字)或短信验证码等。在堡垒机环境中,二次验证可能发生在两个环节: 1. 登录堡垒机时。 2. 从堡垒机跳转到目标交换机时(如果交换机也配置了二次验证,但这种情况较少见,通常堡垒机已经作为统一入口,交换机可能只接受堡垒机的跳转而不额外二次验证)。 我们假设这里的二次验证是指登录堡垒机时的二次验证。 解决方案步骤: 1. **确认堡垒机配置的二次验证方式**: 通常堡垒机支持多种二次验证方式,如: - 动态口令(OTP):如Google Authenticator、短信验证码、硬件令牌等。 - 堡垒机可能集成企业自己的认证系统(如RADIUS、LDAP等)来实现二次验证。 2. **在Xshell中配置堡垒机会话时,如何支持二次验证**: Xshell本身支持多种认证方式,但二次验证通常是在初次密码认证后,由服务器端(堡垒机)要求用户输入一个额外的验证码。因此,在Xshell中,我们通常需要分两步进行认证: - 第一步:输入用户名静态密码(如果有的话)。 - 第二步:当堡垒机返回一个提示要求输入动态验证码时,在Xshell的交互窗口中输入。 3. **具体操作步骤**: a. 在Xshell中创建或打开一个连接堡垒机的会话(配置好堡垒机IP端口)。 b. 连接后,Xshell会提示输入用户名密码(静态密码)。输入后,如果堡垒机配置了二次验证,则会提示输入动态验证码(例如:“Enter your verification code:”)。 c. 此时,用户需要打开自己的动态令牌设备(手机APP或硬件令牌)获取当前的验证码,并在Xshell的提示框中输入。 d. 验证通过后,即可登录堡垒机。 4. **从堡垒机跳转到目标交换机**: 在成功登录堡垒机后,通常堡垒机会提供一个资源列表,用户选择目标交换机进行连接。如果目标交换机本身也配置了二次验证(这种情况较少,因为通常堡垒机已经作为强认证的入口,内部设备信任堡垒机),那么跳转后可能还会要求输入二次验证码。此时,同样在Xshell的交互窗口中输入即可。 5. **关于自动化处理**: 由于二次验证码是动态变化的(通常每30秒变化一次),因此无法像静态密码那样预先保存在Xshell的会话配置中。用户每次登录都需要手动输入当前的动态验证码。 但是,如果堡垒机支持公钥认证(而不是密码+动态验证码)并且已经将公钥添加到堡垒机,那么可能可以绕过密码认证,但二次验证可能仍然需要。具体取决于堡垒机的配置。 6. **注意事项**: - 确保时间同步:动态令牌通常基于时间,因此用户设备(手机或硬件令牌)的时间必须与堡垒机的时间同步,否则验证码会失效。 - 备用验证码:有些系统在设置二次验证时会提供一组备用验证码(一次性使用),当无法获取动态验证码时可以使用。 - 如果多次输入错误,账户可能会被临时锁定,需联系管理员。 7. **引用相关**: 在引用[2]中提到堡垒机提供了更先进的安全技术,其中就包括双因素认证(二次密码验证)[^2]。引用[4]中提到的命令拦截功能虽然不直接相关,但也说明堡垒机有增强安全性的能力。 8. **特殊情况**: 如果堡垒机采用其他二次验证方式(如生物识别、手机推送确认等),则可能无法直接在Xshell中完成。这时可能需要堡垒机提供其他登录方式(如Web登录)或者使用支持该认证方式的客户端。但Xshell作为标准SSH客户端,通常只支持文本交互的二次验证(即输入动态验证码)。 因此,处理二次密码验证的关键在于:在Xshell的交互式会话中,按照堡垒机的提示依次输入静态密码动态验证码。 如果用户遇到无法输入动态验证码的情况,请检查堡垒机的二次验证配置是否支持通过SSH文本交互输入。 总结步骤: 1. 使用Xshell连接堡垒机。 2. 输入用户名静态密码。 3. 在堡垒机提示输入动态验证码时,打开动态令牌设备获取并输入。 4. 登录堡垒机后,按常规方式连接目标交换机(如果交换机有二次验证,同样在提示时输入)。 注意:如果堡垒机配置了二次验证,那么每次登录堡垒机都需要输入动态验证码(除非堡垒机支持长时间的会话保持,但这可能带来安全风险)。 相关问题: 1. 奇治堡垒机如何配置双因素认证(2FA)? 2. 在Xshell中如何保存堡垒机的静态密码但动态验证码手动输入? 3. 如果动态令牌设备丢失,如何登录奇治堡垒机? 4. 目标交换机配置了二次验证,通过堡垒机跳转时如何输入验证码?</think>### 奇治堡垒机环境下通过XShell处理二次密码验证的完整指南 当奇治堡垒机配置了二次密码验证(双因素认证)时,通过XShell访问目标交换机的流程需要特殊处理。以下是分步解决方案: --- #### 一、二次验证的触发场景及原理 1. **验证流程**: - 首次认证:XShell连接堡垒机时输入基础账号密码 - 二次认证:登录堡垒机后访问交换机时触发额外验证 - 验证方式:动态令牌(OTP)、短信验证码、硬件Key等[^2] 2. **安全机制**: ```mermaid graph LR A[XShell连接堡垒机] --> B[基础账号认证] B --> C{二次验证触发点} C -->|访问交换机时| D[输入动态密码] D --> E[堡垒机代理连接] E --> F[目标交换机] ``` --- #### 二、XShell配置与操作步骤 ##### 阶段1:基础会话配置 1. **创建堡垒机会话**: - 协议:`SSH` - 主机:堡垒机IP(如 `10.10.1.100`) - 端口:`22`(或管理员指定端口) - 认证:用户名/密码(首次认证凭证) 2. **启用会话日志**(关键步骤): ```bash # XShell需开启日志记录以捕获二次验证提示 文件 > 日志 > 勾选"连接时开始日志记录" ``` ##### 阶段2:处理二次验证 1. **登录后操作流程**: ```bash # 1. 连接堡垒机后执行资源列表命令 [user@bastion]$ list-resources # 2. 选择目标交换机(触发二次验证) [user@bastion]$ connect switch-core-01 # 3. 观察提示信息(关键) !!! 二次验证要求: 请输入动态令牌 (有效期60秒) ``` 2. **验证码输入方法**: - 动态令牌:打开手机APP(如Google Authenticator)获取6位数字 - 短信验证:查看手机短信并输入验证码 - 硬件Key:插入USB Key后自动读取 > **注意**:输入需在超时前完成(通常60秒)[^2] ##### 阶段3:自动化辅助方案 1. **Expect脚本模板**: ```expect # 保存为auto_2fa.exp spawn ssh user@堡垒机IP expect "password:" send "首次密码\r" expect ">" send "connect 交换机IP\r" expect "动态令牌" ;# 关键匹配点 send "[exec python get_otp.py]\r" ;# 调用本地获取OTP的脚本 interact ``` - 需提前部署OTP获取工具(如`oathtool`) 2. **安全警告**: - 避免在脚本中硬编码密码 - 仅限受信任环境使用 - 建议配合堡垒机API令牌[^4] --- #### 三、故障排除与最佳实践 ##### 常见问题处理 | 故障现象 | 解决方案 | |---------|---------| | 不出现二次验证提示 | 1. 检查堡垒机资源授权策略<br>2. 确认用户角色是否绑定2FA[^2] | | 验证码超时失效 | 1. 同步本地与服务器时间(NTP)<br>2. 使用TOTP算法校准 | | 连续验证失败 | 1. 检查令牌种子配置<br>2. 联系管理员重置2FA绑定 | ##### 安全增强建议 1. **会话保护**: - 启用XShell的`会话锁定`功能(空闲自动锁定) - 关闭`记住密码`选项 2. **审计合规**: ```bash # 堡垒机会记录以下关键事件: - 二次验证触发时间 - 验证结果(成功/失败) - 客户端IP地址[^2] ``` --- #### 四、替代方案(当XShell受限时) 1. **Web控制台方案**: - 通过浏览器登录堡垒机H5界面 - 图形化选择目标资源 - 内置动态令牌输入控件 2. **API访问模式**: ```python import requests auth_url = "https://bastion/api/v1/2fa/verify" payload = { "user": "admin", "device_id": "YOUR_DEVICE", "otp": 123456 # 动态获取 } response = requests.post(auth_url, json=payload) ``` - 需堡垒机开启API接口[^4] > **关键提示**:所有操作均受堡垒机审计监控,包括二次验证过程[^2]。若持续失败,请联系奇治管理员检查2FA策略绑定状态。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值