【发布时间】:2017-02-20 12:47:03
【问题描述】:
尝试按如下方式设置自定义用户检查:
currentSessionUser = new User() //Nope, lets pull information from the Active Directory
{
FirstName = UserPrincipal.Current.GivenName,
LastName = UserPrincipal.Current.Surname,
Username = UserPrincipal.Current.SamAccountName,
AccountState = 0
};
当您的客户是非 AD 帐户或移动设备时会发生什么?
如何在此处捕获错误?
【问题讨论】:
-
'Current' 属性从进程\线程令牌中获取当前用户 SID,如果是 AD 帐户,则通过 LDAP 协议从 AD 中获取信息;如果是本地帐户,则从使用 WinNT 协议的本地计算机中获取信息。如果找不到帐户 SID,则抛出 NoMatchingPrincipalException,如果无法检索 SID 信息,该函数将抛出 PrincipalOperationException。我确实怀疑移动设备(甚至在 Windows 手机上)是否支持 S.DS.AM
-
那么检查当前属性中的空值是否是处理非 AD 设备的最佳方式?我不太关心实际处理移动设备——而且锁定无法通过简单的用户名检查进行身份验证的设备。
-
我只能声称,如果您在基于 Windows 的计算机上的本地帐户下运行该进程并调用“当前”属性,大多数值将具有空值(UserPrincipal.Current.SamAccountName 将设置)
-
只是为了确保我们在同一页面上。我想您有一个在 IIS 上运行的 ASP.NET 应用程序(可能是独立工作站或加入域)。 UserPrincipal.Current 将返回启动进程的用户(默认情况下在 IIS 中或在 web.config 中指定的应用程序池),或当前线程在下模拟的用户帐户
标签: asp.net-mvc error-handling asp.net-mvc-5 active-directory userprincipal