我正在开发一个包含WCF RIA服务的Silverlight 5应用程序。该应用会拨打许多网络服务电话,每次通话都需要传递username
和password
元素以及dsn
属性。其中一些调用将使用“系统管理员”用户名和密码,有些将使用用户自己的登录凭据。在所有情况下,dsn
值都将在用户登录时设置。
所以我的问题是,在哪里存储所有这些?我现在列出我的两个重要场景,希望有人可以提供帮助。
验证
我创建了一个自定义成员资格提供程序,它覆盖了ValidateUser(string username, string password)
方法以实际进行身份验证。该方法中的代码使用用户提供的用户名和密码调用Web服务(在加载主页面时出现的子窗口中)。
在子窗口中,用户可以选择他们想要使用的DSN;但我不知道如何在我的会员提供者中使用ValidateUser()
方法。
授权
一旦我对用户进行了身份验证,我需要服务器进行调用以获取有关用户的更多信息并将其存储为用户配置文件的一部分。这样,我可以在以后的应用程序逻辑和UI元素中使用它。此调用将使用系统管理员凭据和用户在子窗口中选择的DSN。
生成的代理确实为每个SOAP操作方法提供*Completed
个事件。我想我可以分配一个事件处理程序并在那里处理这个授权位。那么,我在哪里可以存储我可以在客户端和服务器项目中访问它们的系统管理员凭据?
我已经实现了我的身份验证域服务,如下所示:
using System.ServiceModel.DomainServices.Hosting;
using System.ServiceModel.DomainServices.Server.ApplicationServices;
namespace THINKImportSystem.Web
{
[EnableClientAccess]
public class AuthenticationDomainService : AuthenticationBase<User>
{
}
public class User : UserBase
{
}
}