2

私の asp.net mvc4 プロジェクトでは、ApiControllers を使用して Web クライアントとモバイル クライアントの両方にサービスを提供しています。Web サービスを保護するために、[Authorize] アノテーションを使用しています。今のところ、Web クライアントは問題なく動作しています。しかし、モバイル アプリケーション (Android など) から Web API を呼び出すと、エラーが発生します。コードスニペットを振り返ったとき:

   [Authorize]
    public List<double> GetSomeInfo(int param1, string param2)
        {
           User user = SessionData.CurrentUser;
           // do something using user.UserId
           // ....

        }

セッション データは、ユーザーが Web アプリに接続している場合にのみ、ユーザー接続プロパティを保持します。ただし、モバイル クライアントの場合、Session Data は null です。したがって、この問題を解決する適切な方法はありますか。私の意見では、userId は、何らかの処理を行うために必要な Web API のパラメーターとして提供する必要があると思います。どう思いますか ?

4

2 に答える 2

0

セッションは HTTP アンチパターンであるため、Web API はセッションをサポートするようには設計されていません。必要な認証メカニズムをセットアップしている場合は、Thread.CurrentPrincipal にアクセスして、現在認証されているユーザーを取得できます。

于 2013-04-09T16:29:52.840 に答える