2

我正在编写一个类似于购物车系统的 Silverlight 应用程序。此应用程序只能在用户登录到网站后从 asp.net 网站启动。

首次加载时,应用程序将通过 WCF 服务向后端发送请求,以检索购物车中的所有现有商品。

因此,silverlight 应用程序需要知道当前用户是谁,才能找到要加载的购物车。

到目前为止,我发现有几种方法,但对其中任何一种都不满意:

  1. 使用 wcf aspnet 兼容。silverlight 可以通过询问 wcf 服务来询问当前用户是谁。
  2. 使用 xaml.InitParameters 将参数从页面传递到 xaml,并传入最少量的信息,以序列化格式识别用户。
  3. 通过查询字符串将参数传递给 xaml(显然这也是可能的)

任何人都可以分享实现这一目标的最佳实践吗?谢谢

4

1 回答 1

2

我们在项目中使用第一个解决方案。在这种情况下,您不必发明任何类型的序列化格式。这种方法的一个缺点 - 启动时额外的异步逻辑。

服务示例:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class UserInfoService : IUserInfoService
{
        public UserInfo GetUserInfo()
        {
                if (HttpContext.Current.User.Identity.IsAuthenticated)
                        return null;

                var userInfo = new UserInfo
                {
                        Login = HttpContext.Current.User.Identity.Name,
                        Fullname = ...,
                };

                return userInfo;
        }
}

我认为通过 initParams 或查询字符串发送用户 ID 不是一个好主意。这样的事情应该更加隐蔽。

真正重要的是在每次服务调用时验证服务器上的用户,因为任何人都可以以与您的应用程序类似的方式调用您的服务。

高温高压

于 2009-06-30T19:24:14.273 回答