在我的身份验证服务中,我想在我的用户服务上调用方法(查询或调用)来验证凭据。所以,例如:
protected override AuthUser ValidateCredentials(string name, string password,
string customData, out string userData)
{
AuthUser user = null;
userData = null;
using (UserService svc = new UserService())
{
if (the result of a call on UserService shows a valid username/password)
{
//Create the user object
user = new AuthUser()
{
Name = name,
UserId = // that user's UserId
};
}
if (user != null)
{
//Set custom data fields for HTTP session
userData = user.UserId.ToString();
}
}
return user;
}
我在搜索诸如“从另一个ria服务中调用ria服务”之类的内容时发现的结果与实际从另一个服务中调用的结果无关。从范式的角度来看,我做错了什么吗?如果没有,你怎么做到这一点? :)
答案 0 :(得分:1)
当你想要做的只是查询时,聚合DomainServices非常简单。像
这样的东西new MyDomainService()。GetUser(userName)
应该工作得很好。但是,当您尝试提交或调用它时会变得更加棘手,因为您需要初始化并处置DomainService。我这样做了一段时间,但我认为您可以覆盖父DS中的Initialize和Dispose,以调用您孩子DS中的方法。对于提交,您将无法直接调用这些方法。相反,您需要创建一个ChangeSet并调用DS.Submit方法。
此外,对于您的方案,可能值得查看自定义身份验证示例here。对于你想要做的事情,这是一种稍微不同的方法。