C# 使用LayoutTemplate的asp:login表单上的空密码字段
我在C# 使用LayoutTemplate的asp:login表单上的空密码字段,c#,asp.net,login,C#,Asp.net,Login,我在.aspx页面上有一个asp:login控件。我正在使用布局模板。当用户输入错误的用户名或密码时,在postback上,密码字段似乎已填充。因此,如果用户只更改用户名并再次尝试登录,则返回一个错误。调试我看到密码是空的 我使用默认的asp:login,而不使用LayoutTemplate,测试了相同的行为,效果很好。这意味着在输入错误的用户名或密码后,在回发时,密码字段显示为空 <asp:Login ID="lgLogin" runat="server" FailureText="Wr
.aspx
页面上有一个asp:login
控件。我正在使用布局模板
。当用户输入错误的用户名或密码时,在postback
上,密码字段似乎已填充。因此,如果用户只更改用户名并再次尝试登录,则返回一个错误。调试我看到密码是空的
我使用默认的asp:login
,而不使用LayoutTemplate
,测试了相同的行为,效果很好。这意味着在输入错误的用户名或密码后,在回发
时,密码字段显示为空
<asp:Login ID="lgLogin" runat="server"
FailureText="Wrong data"
TextLayout="TextOnLeft"
OnAuthenticate="lgLogin_Authenticate"
DestinationPageUrl="http://www.blablabla.com/"
RenderOuterTable="false"
DisplayRememberMe="False">
我怎样才能让它工作
编辑:
这是我使用的代码。当出现错误并发生回发时,密码字段将显示为已填充。如果用户在调试模式下再次单击登录,我会看到密码为空
<asp:Login ID="lgLogin" runat="server"
FailureText="Wrong data"
TextLayout="TextOnLeft"
OnAuthenticate="lgLogin_Authenticate"
DestinationPageUrl="http://www.blablabla.com/"
OnLoginError="lgLogin_Error"
RenderOuterTable="false"
DisplayRememberMe="False">
<LayoutTemplate>
<div class="form-group">
<label for="lgLogin_UserName" class="col-md-4 control-label">Login <span class="require">*</span></label>
<div class="col-md-8">
<div class="input-icon">
<i class="fa fa-user"></i>
<asp:TextBox runat="server" type="text" ID="UserName" CssClass="form-control" />
</div>
</div>
</div>
<div class="form-group">
<label for="lgLogin_Password" class="col-md-4 control-label">Password <span class="require">*</span></label>
<div class="col-md-8">
<div class="input-icon">
<i class="fa fa-lock"></i>
<asp:TextBox runat="server" type="password" ID="Password" CssClass="form-control" />
</div>
</div>
</div>
<div id="AvisoError" runat="server" class="alert alert-danger" visible="false">
<button class="close" data-close="alert"></button>
<span>
<asp:Label ID="FailureText" runat="server" ></asp:Label>
</span>
</div>
<div class="form-group">
<div class="col-md-offset-4 col-md-8">
<asp:Button class="btn btn-primary" ID="LoginButton" runat="server" CommandName="Login" Text="Entrar" />
</div>
</div>
</LayoutTemplate>
<TextBoxStyle CssClass="form-control"/>
<LoginButtonStyle CssClass="btn btn-primary" />
登录*
密码*
如果我使用默认的asp:login,如果出现错误并发生回发,密码将显示为空
<asp:Login ID="lgLogin" runat="server"
FailureText="Wrong data"
TextLayout="TextOnLeft"
OnAuthenticate="lgLogin_Authenticate"
DestinationPageUrl="http://www.blablabla.com/"
RenderOuterTable="false"
DisplayRememberMe="False">
显然,您已经将文本框或输入id设置为密码字段,当回发发生时,它将关闭。好的做法是让它保持原样,让用户再输入一次,因为这个功能存在是有原因的,即使您当时想推动它
首先将窗体的“自动完成”属性设置为“关闭”。然后在页面加载时,将密码文本框值存储到某个临时变量,然后将该临时变量值推送到文本框。为提高安全性,您可以将该密码字段值存储到会话中,然后使用base64对其进行加密,然后使用它。您需要在上添加一个属性,以便在回发后保留控件的状态。更改加载页上字段的类型事件完成,对我有效:
$(document).ready(function () {
document.getElementById("textBoxSenha").type = "password";
});
你能添加代码吗?调查起来会容易些。我想保持原样,那是空的。但在屏幕上,它显示为已填充。如果我使用默认登录,在回发时,文本框显示为空,这是正常的。但如果我使用LayoutTemplate,则密码文本框会在填充时显示。