密码在ext.net用户控件中可见

时间:2018-05-30 11:48:51

标签: ext.net

带密码输入的用户控制(ascx)。右键单击,检查 - 值是可见的。如果密码输入在aspx中,则不会发生这种情况。

嗯,似乎我必须在这里添加一些乱码,因为平台不允许我发布这个帖子,因为“大部分是代码”。

Default.aspx的

<%@ Page Language="C#" %>

<%@ Register Src="UserPassword.ascx" TagName="UserPass" TagPrefix="uc" %>

<script runat="server">

   protected void Page_Load( object sender, EventArgs e )
   {
      if ( !X.IsAjaxRequest )
      {
         this.BindUser();
      }
   }

   public void BindUser()
   {
      userPass1.UserName = "AliBaba";
      userPass1.Password = "OpenSesame";
   }
</script>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
   <title>Password inspect bug</title>
</head>
<body>
   <form id="form1" runat="server">
      <ext:ResourceManager runat="server" />

      <ext:Window
         ID="Window1"
         runat="server"
         Icon="User"
         Closable="false"
         Title="Customer Details"
         Width="350"
         Height="230"
         Resizable="false"
         BodyStyle="background-color:#fff;"
         BodyPadding="5"
         Layout="Anchor">
         <Items>
            <ext:Panel ID="panel1" runat="server" Header="false" Layout="FitLayout">
               <Content>
                  <uc:UserPass ID="userPass1" runat="server"></uc:UserPass>
               </Content>
            </ext:Panel>
         </Items>
      </ext:Window>
   </form>
</body>
</html>

UserPassword.ascx

<%@ Control Language="C#" %>

<script runat="server">
   public string UserName
   {
      get { return this.txtUser.Text; }
      set { this.txtUser.Text = value; }
   }

   public string Password
   {
      get { return this.txtPassword.Text; }
      set { this.txtPassword.Text = value; }
   }
</script>

<ext:Panel ID="panel1" runat="server" BodyPadding="5" Layout="AnchorLayout">
   <Items>
      <ext:Panel ID="panel2" runat="server" Border="false" Header="false" AnchorHorizontal="100%" Layout="FormLayout">
         <Items>
            <ext:TextField ID="txtUser" runat="server" FieldLabel="User" />
            <ext:TextField ID="txtPassword" runat="server" FieldLabel="Password" InputType="Password" />
         </Items>
      </ext:Panel>
   </Items>
</ext:Panel>

是否有任何已知的解决方法?

1 个答案:

答案 0 :(得分:0)

简短回答:使用this.txtPassword.Text = value而非public string Password { get { return this.txtPassword.Text; } set { this.txtPassword.Text = value; } } 来解决您的直接问题。

答案很长:为什么要从服务器设置密码?最佳做法是将密码存储为服务器上的哈希值,这样您就不会真正知道用户的真实密码,而只是比较两个哈希值。

if (Request.Cookies["username"] != null)
{
     this.txtUsername.setValue(Request.Cookies["uid"].Value);
     this.txtPassword.setValue(Request.Cookies["pwd"].Value);
}

如果您想自动填写密码,我假设您这样做,您需要使用cookie。

numpy