gpt4 book ai didi

c# - 关于验证用户登录名和密码的问题

转载 作者:太空狗 更新时间:2023-10-30 00:34:05 25 4
gpt4 key购买 nike

friend 我需要做一个软件,需要验证有效的用户登录才能使用软件。我试过这个:

bool valid = false;
using (PrincipalContext context = new PrincipalContext(ContextType.Domain,domainname))
{
valid = context.ValidateCredentials( username, password );
}

我正在使用 .net 框架 4。在上面的代码中,如何获取计算机的域名。我努力了SystemInformation.ComputerName ,SystemInformation.UserDomainName但我得到了错误:

The server could not be contacted

.我们可以使用 c# 中的任何头文件获取当前用户名和密码吗?请回答。编辑:我正在使用它在我的计算机或 AD 中进行本地登录。

最佳答案

无法获取用户密码。这可能会导致各种安全问题。而且,如果您想要验证的凭据超出了计算机从 Windows 登录中已知的凭据,您无论如何都需要向用户询问密码。

以下代码适用于具有多个域的森林。如果您没有在 PrincipalContext 构造函数中指定域,它会连接到它正在运行的计算机的域。在我的测试中,您正在验证的用户是否在不同的域中并不重要,只要林中的域之间存在适当的信任即可。

bool valid = false;
using (var context = new PrincipalContext(ContextType.Domain))
{
valid = context.ValidateCredentials(username, password);
}

你可以像这样获取代表当前用户的对象:

var user = System.Security.Principal.WindowsIdentity.GetCurrent();

更新

如果您想根据机器上的本地帐户数据库检查凭据,则只需更改 PrincipalContext 的类型:

bool valid = false;
using (var context = new PrincipalContext(ContextType.Machine))
{
valid = context.ValidateCredentials(username, password);
}

关于c# - 关于验证用户登录名和密码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com