MVVM中的PasswordBox绑定

时间:2014-01-20 07:06:07

标签: c# asp.net wpf mvvm passwords

绑定到PasswordBox的问题,这是一个安全风险,但我使用的是MVVM模式,我在这里发现了一些有趣的代码

http://www.wpftutorial.net/PasswordBox.html

我的LoginViewModel中基本上有用户名和密码的属性。用户名很好,因为它是一个TextBox。

我使用了上述代码并输入了

<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>

当我将PasswordBox作为TextBox并且绑定路径=密码时,我的LoginViewModel中的属性已更新。

我的代码很简单,基本上我有一个Command for Button。当我按下它时会调用CanLogin,如果它返回true,则调用Login。 您可以看到我在此处检查我的属性用户名,这非常有效。

在登录中,我向我的服务发送用户名和密码,用户名包含我的视图中的数据,但密码为空|空

<TextBox Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}"
     MinWidth="180" />

<PasswordBox ff:PasswordHelper.Attach="True" 
         ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>

我有我的TextBox,这没问题,但在我的ViewModel中,密码为空。

我放了一个断点,确实代码进入了静态助手类,但它从未在我的ViewModel中更新我的密码

2 个答案:

答案 0 :(得分:0)

您应该按照MSDN的建议使用SecureString,请参阅此处的参考资料:

wpf password box into a SecureString in C#

如果有帮助,请告诉我们,我们已成功通过附加属性绑定密码,但希望您可以自己学习以上链接:)

答案 1 :(得分:0)

请停止您要执行的操作,因为在应用程序周围传递未加密的密码是一种可怕的安全风险。您应该像这样登录您的用户:

为您提供用户名和密码输入字段,但密码值应立即加密。您的数据库应仅存储这些加密密码。因此,要验证用户是否输入了正确的密码,只需比较加密密码的值。

因此,您无需将用户密码字段的值传递给数据库进行检查...您需要将加密密码值从数据库传递给视图模型。