活动目录asp.net表单身份验证在asp.net MVC 3
本文关键字:asp net MVC 身份验证 表单 活动 | 更新日期: 2023-09-27 18:05:15
我必须实现这样一个接口:
interface IMembershipWrapper
{
Guid GetUserId();
Guid GetUserId(string username, bool userIsOnline);
bool ValidateUser(string userName, string password);
…
}
指向活动目录并使用Unity注入。
对于某些方法,我可能会抛出一个notimplemtedexception异常,但你认为这通常是可能的吗?你推荐什么策略?
我知道我可以通过web配置"活动目录asp.net表单认证"。配置如下所述。不幸的是,这不是一个选项。
无需更改web.config中的身份验证系统,这应该是完全可能的。特别是如果你使用的是。net 3.5+。看一下System.DirectoryServices.AccountManagement.
要实现GetUserId(string username, bool userIsOnline)
,您可能需要尝试以下操作:
public Guid GetUserId(string username, bool userIsOnline) {
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "[active directory domain here]")) {
var user = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, username);
if(user != null)
return user.Guid.Value;
else
return null;
}
}
在PrinicalContext
上使用ValidateCredentials()
实现ValidateUser(string userName, string password)
public bool ValidateUser(string userName, string password) {
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "[active directory domain here]"))
{
return pc.ValidateCredentials(userName, password);
}
}
如果没有更多关于您的实现的信息,我不确定如何去实现GetUserId()
,因为看起来你没有足够的信息去活动目录。