我已经构建了一个自定义的Identity.Models框架,只需扩展新的asp.net标识框架2.0,这样我就可以将用户名和其他相关用户数据存储在我的自定义数据库中,而不是生成的默认实体数据库中。工作正常。
现在我正在构建一个WCF服务,我希望对这些用户进行身份验证并利用asp.net identity 2.0功能,但无法这样做。
在我的WCF服务中,我创建了一个新的Validator类,扩展了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);
}
}
}
}
}
任何建议都将受到高度赞赏。
答案 0 :(得分:2)
你几乎就在那里,但是,你需要再做一步,通过引入服务行为来告诉WCF服务表现良好,通常是在配置中。有关详细信息,请阅读
Authentication and Authorization with ASP.NET Identity 2.0 for WCF Services