在我们的项目中,我们必须使用AD进行身份验证,但我们还必须提供注销机制。目前我们正在使用Windows身份验证,但似乎没有办法注销。
我的想法是使用Identity并对用户进行身份验证,如下所示:
using (PrincipalContext context = new PrincipalContext(ContextType.Machine))
{
var principal = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userModel.Username);
if (principal != null)
{
if (context.ValidateCredentials(userModel.Username, userModel.Password))
{
claims = AssignClaims(principal);
}
}
}
基本上,将为用户提供登录屏幕。然后他将输入他的Windows凭证,上面的代码将验证用户是否应该有权访问。
我遇到问题的一件事是,ValidateCredentials
时不时地决定停止工作,即使我输入了正确的凭据,FindByIdentity
找到了用户ValidateCredentails
}返回false
。知道它可能是什么?有更好的方法可以使用吗?
这看起来像是实施它的合法方式还是存在问题?