【发布时间】:2010-11-04 13:58:44
【问题描述】:
我想利用 Windows 身份验证模型对使用我的 C# 3.5 WinForms 应用程序的用户进行身份验证:
- 已登录 Windows 的用户会自动登录到我的应用程序。
- 如果用户想明确登录,他的用户名和密码应该由 Windows 检查,或者更好的是,由 Windows 用标准的 Windows Dialog 提示。结果应该是另一个
WindowsIdentity对象。
第一个很久以前很容易解决:我看过
WindowsIdentity identity = WindowsIdentity.GetCurrent();
为了确定,我检查了
if (identity.IsAuthenticated) { ... }
对于第二种情况,我在其他 SO Q&A 中发现了一些 API 调用,但我很确定必须有一种托管方式,我错了吗?
此外,我想知道我对 1. 的方法是否节省且适当。感谢您的反馈!
更新:根据 Ivan 的说法,我必须使用 P/Invoke 方法。这基本上没问题,但是我仍然需要一种方法来检索某个用户的WindowsIdentity 对象,该用户的IsAuthenticated 属性设置为true。 P/Invoke 调用本身不返回这样的对象。 如何做到这一点?
【问题讨论】:
-
我不确定你为什么要做第二件事。您是否希望用户以不同于他们登录时的用户身份运行?
-
@giltanis:是的,如果用户想使用与当前登录 Windows 不同的帐户,我希望用户能够通过用户名和密码进行身份验证。
标签: c# winforms .net-3.5 windows-authentication