朋友我需要制作一个软件,需要验证有效的用户登录才能使用软件.我试过这个:
bool valid = false;
using (PrincipalContext context = new PrincipalContext(ContextType.Domain,domainname))
{
valid = context.ValidateCredentials( username, password );
}
Run Code Online (Sandbox Code Playgroud)
我正在使用.net框架4.在上面的代码中如何获取计算机的域名.我试过了
SystemInformation.ComputerName,SystemInformation.UserDomainName
但我得到的错误是:
无法联系服务器
.我们可以使用c#中的任何头文件获取当前的用户名和密码吗?请回答.编辑:我使用它在我的计算机或AD中进行本地登录.
无法获取用户的密码.这可能会导致各种安全问题.如果您想验证机器已经知道的Windows登录之外的凭据,您还需要询问用户密码.
以下代码适用于具有多个域的林中.如果未在PrincipalContext构造函数中指定域,则它将连接到正在运行的计算机的域.在我的测试中,只要在林中的域之间存在适当的信任,您验证的用户是否位于不同的域中并不重要.
bool valid = false;
using (var context = new PrincipalContext(ContextType.Domain))
{
valid = context.ValidateCredentials(username, password);
}
Run Code Online (Sandbox Code Playgroud)
你可以得到一个代表当前用户的对象,如下所示:
var user = System.Security.Principal.WindowsIdentity.GetCurrent();
Run Code Online (Sandbox Code Playgroud)
更新
如果您想要检查计算机上本地帐户数据库的凭据,则只需更改以下类型PrincipalContext:
bool valid = false;
using (var context = new PrincipalContext(ContextType.Machine))
{
valid = context.ValidateCredentials(username, password);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3417 次 |
| 最近记录: |