2

ショッピングカートシステムに似たSilverlightアプリケーションを作成しています。このアプリは、ユーザーがサイトにログインした後にのみasp.netWebサイトから起動できます。

最初の読み込み時に、アプリはWCFサービスを介してバックエンドにリクエストを送信し、ショッピングカート内の既存のすべてのアイテムを取得します。

したがって、Silverlightアプリは、現在のユーザーが誰であるかを認識し、ロードするショッピングカートを見つける必要があります。

これまでにいくつかの方法があることがわかりましたが、どれにも満足していません。

  1. wcfaspnetcompatを使用します。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を送信することは、私が思うに良い考えではありません。そのようなものはもっと隠されるべきです。

本当に重要なことは、サービスを呼び出すたびにサーバー上のユーザーを確認することです。これは、誰でもアプリと同じようにサービスを呼び出すことができるためです。

HTH

于 2009-06-30T19:24:14.273 に答える