c# - 为一个 Windows 用户生成唯一 key

标签 c# active-directory windows-authentication c#-6.0

我有一个带有 ASP.NET Web API 服务器的 WPF 客户端。我想为使用客户端的任何特定 Windows 用户生成一个唯一 key ,以便 Web API 可以阻止该用户的多次登录尝试。我首先考虑只使用:

Environment.UserDomainName + "\" + Environment.UserName

但这对于许多用户来说可能是一样的。我不想包含机器名称,因为我想跟踪该用户,无论他们使用什么机器。如何使用 UserDomainName + "\"+ Environment.UserName 组合下的客户端应用程序为一个特定的 Windows 用户创建唯一 key ,无论他们在哪台计算机上使用它? p>

注意: key 应防止用户更改,以便用户更改 key 以防止被锁定会使其无效。没有本地数据库,因此目前 key 存储在用户主目录中的用户设置文件中。但是,文件存储在哪里并不重要,其计算机上的任何管理员都可以访问它,并且作为家庭用户,他们通常自己就是管理员。

最佳答案

您可以使用 GUID 系统,例如:

key = Guid.NewGuid() + "\\" + Environment.UserDomainName + "\\" + Environment.UserName;

一个问题是,重新生成相同 GUID 的可能性非常小,为了防止这种情况,您可以将所有“使用的”GUID 存储在列表/字典中,并在任何重复时重新生成一个。

关于c# - 为一个 Windows 用户生成唯一 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41339233/

相关文章:

c# - 是否可以检查一个简单的表达式是否总是返回 true?

python - 使用 ldap 库的 python 中的 LDAP 身份验证问题

powershell - CSV空,以从广告用户导出自定义属性

asp.net - 使用 Windows 身份验证注销 ASP.NET MVC 应用程序并能够使用同一用户再次登录

IIS7 上的 ASP.NET 身份验证问题 - Windows 身份验证的 User.Identity.Name 为空

c# - 混淆+反射

c# - 根据用户确定在 Json.Net 中序列化的属性

c# - 如何为 Linux 上的 Mono C# 应用程序创建构建文件?

c# - AuthenticablePrincipal.LastLogon 属性是 LastLogOnTimeStamp 值吗?

asp.net-mvc - Windows 身份验证和 SQL 成员资格服务