c# - MVVM 中的 PasswordBox 绑定(bind)

标签 c# asp.net wpf mvvm passwords

绑定(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/

相关文章:

javascript - 保持滚动位置会导致页面跳转

wpf - 使用通用样式作为基础与自定义用户控件

c# - 为什么我不能引用 System.ComponentModel.DataAnnotations?

WPF:DataGrid 单元格双击

c# - View 模型公开的集合必须使用 MVVM 模式实现 ObservableCollection<T>

asp.net - 是否可以在 SignalR 中过滤接收器?

c# - Autofac - 无法创建请求生命周期范围,因为 HttpContext 不可用 - 由于异步代码?

c# - 如何为 DotNetOpenAuth 设置返回 url

c# - 如何在运行时将 IL 注入(inject)方法

c# - 在.NET中使用Win32 API模拟按钮点击