相关疑难解决方法(0)

如何绑定到MVVM中的PasswordBox

我遇到了绑定到PasswordBox的问题.这似乎是一个安全风险,但我正在使用MVVM模式,所以我希望绕过这个.我在这里找到了一些有趣的代码(有没有人用过这个或类似的东西?)

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

它在技术上看起来很棒,但我不确定如何检索密码.

我基本上有我的LoginViewModelfor Username和属性Password.Username很好,正在工作,因为它是一个TextBox.

我按照说明使用了上面的代码并输入了这个

<PasswordBox ff:PasswordHelper.Attach="True"
    ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>
Run Code Online (Sandbox Code Playgroud)

当我有了PasswordBoxa TextBox,Binding Path=Password然后我的房产LoginViewModel被更新了.

我的代码很简单,基本上我有一个Commandfor my Button.当我按下它时会CanLogin被调用,如果它返回true,则调用它Login.
你可以看到我检查我的房产在Username这里工作得很好.

Login我一起发送到我的服务UsernamePassword,Username包含数据从我ViewPasswordNull|Empty

private DelegateCommand loginCommand;

    public string Username { get; set; }
    public string Password { get; set; }


    public ICommand LoginCommand
    {
        get
        { …
Run Code Online (Sandbox Code Playgroud)

c# passwords wpf mvvm wpf-controls

243
推荐指数
11
解决办法
18万
查看次数

绑定PasswordBox密码是个坏主意吗?

我已经读过,出于安全原因, WPF PasswordBox中的密码没有用于绑定密码的依赖项属性.尽管如此,无论如何都有办法绑定它.

MVVM模式的用户需要这种数据绑定; viewmodel无法在不破坏模式的情况下直接触摸PasswordBox.在MVVM设置中使用PasswordBoxes的一种方法是将整个PasswordBox控件传递给ViewModel,但这无论如何都会破坏模式.绑定密码可能是使用MVVM处理密码的最简洁方法.

有一个反对绑定密码论据,因为这会将明文密码保存在未加密的内存中,直到它被垃圾收集.然而,我看到它的方式是,从您访问该Password属性的那一刻起,密码就会存储在未加密的内存中.这个观点(或类似的)似乎在这个问题中被借调.当然,它会在更短的时间内在没有绑定的情况下存在(不是登录形式有长期存在的倾向),但风险仍然存在.

鉴于这些论点,绑定密码真的是一个坏主意吗?为什么?

c# security data-binding wpf mvvm

11
推荐指数
1
解决办法
2404
查看次数

PasswordBox绑定

我刚开始使用MV-VM和WPF,并且遇到了解一些绑定问题的问题.

我有一个登录页面,其中包含a ComboBox和a PasswordBox.该ComboBox如下所示:

<ComboBox Name="comboBox1" SelectedItem="{Binding Path=Username}">
Run Code Online (Sandbox Code Playgroud)

这工作得很好 - 每次SelectedItem更改时我的值都会更新ComboBox!

在我的ViewModel中,我有一个ICommand使用此方法来确定Login按钮是否处于活动状态:

public bool CanLogin()
{
    return !string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(Password);
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是我没有PasswordBox绑定ViewModel上的Password属性 - 所以我没有办法告诉它什么时候更新.

那么如何获取PasswordBoxViewModel 的值呢?我读过的所有内容都说不出PasswordBox于安全原因而绑定.我只是取消了CanLogin()的密码限制,但我需要将值传递给AccountService.

wpf binding mvvm passwordbox

10
推荐指数
2
解决办法
2万
查看次数