我已经建立了一个自定义身份。模型框架通过简单地扩展新的asp.net身份框架2.0,这样我就可以将用户名和其他相关用户数据存储在我的自定义数据库中,而不是生成的默认实体数据库,它工作良好。
现在我正在构建一个WCF服务,我想从那里验证这些用户并利用asp.net identity 2.0功能,但无法这样做。
在我的WCF服务中,我创建了一个新的验证器类扩展UsernamePasswordValidator,但它没有像预期的那样工作。
public class IdentityValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
using (var context = new MyIdentityDbContext())
{
using (var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context)))
{
var user = userManager.Find(userName, password);
if (user == null)
{
var msg = String.Format("Unknown Username {0} or incorrect password {1}", userName, password);
Trace.TraceWarning(msg);
throw new FaultException(msg);
}
}
}
}
}
您差不多完成了,但是,您还需要通过引入服务行为(通常在配置中)来告诉WCF服务表现良好。详情请参阅
使用ASP进行身份验证和授权. NET Identity 2.0 for WCF Services