0

我有 2 个不同的应用程序,一个在 Silverlight 中,另一个是 Web 应用程序。

我需要两者的单点登录。

场景就像:任何用户登录到 Silverlight 应用程序,然后该应用程序中有一个菜单可以在登录模式下打开另一个 Web 应用程序。

两个应用程序都有不同的数据库,但两者的用户名和密码相同。

我正在为 silverlight 应用程序使用 WCF 服务。

有人可以提出解决方案吗?

4

2 回答 2

0

我假设您正在使用 ASP.NET 和 Forms/其他身份验证,并且 Silverlight 应用程序来自同一个 Web 服务器。

首先看一下这个链接和来自 Visual Studio 的 Silverlight Business 应用程序模板:http://msdn.microsoft.com/en-us/library/ee942449(v=VS.91).aspx

更手动的方法可能包括编写 WCF 服务,该服务在成功登录时返回或设置您在会话中存储的“UserToken”。

// the wcf service needs these attributes
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]

// a manual approach: successful login, create a webservice method to call from Silverlight to set the authentication
HttpContext.Current.Session.Add("currentUserToken", userToken);
FormsAuthentication.SetAuthCookie(this.EmailAddressUserControl1.EmailAddressTextBox.Text, false);

Forms Authentication 将负责将您从 ASP.Net 请求中注销,但您必须自己处理一个服务请求的会话超时。

于 2012-06-29T20:17:16.613 回答
0

在我看来,您应该使用一个数据库来为每个登录的用户保留当前会话的令牌。在这种情况下,您登录的位置并不重要,您将从该数据库获取登录令牌。

于 2012-06-29T12:12:36.883 回答