绑定(bind)到 PasswordBox 的问题,这是一个安全风险,但我使用的是 MVVM 模式,我在这里找到了一些有趣的代码
http://www.wpftutorial.net/PasswordBox.html
我的 LoginViewModel 中基本上有用于用户名和密码的属性。用户名很好,因为它是一个文本框。
我按照上述使用了上面的代码并输入了这个
<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
当我将 PasswordBox 作为 TextBox 并且 Binding Path=Password 时,我的 LoginViewModel 中的属性已更新。
我的代码很简单,基本上我的按钮有一个命令。当我按下它时,会调用 CanLogin,如果它返回 true,则调用 Login。
你可以看到我在这里检查了我的用户名属性,效果很好。
在登录中,我向我的服务发送用户名和密码,用户名包含来自我的 View 的数据,但密码为 Null|Empty
<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 中更新我的密码
最佳答案
请停止你正在尝试做的事情,因为在应用程序周围传递未加密的密码是一个可怕的安全风险。您应该像这样登录您的用户:
为他们提供用户名和密码输入字段,但密码值应立即加密。您的数据库应仅存储这些加密密码。因此,要验证用户是否输入了正确的密码,您只需比较加密密码的值。
因此,您无需将用户密码字段的值传递给数据库进行检查...您需要将加密的密码值从数据库传递给 View 模型。
关于c# - MVVM 中的 PasswordBox 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21228036/