1

スポーツ オブジェクトの予約 (テニス コート、スカッシュ コートなど) を管理する ASP.NET MVC アプリを構築しています。

ユーザーは、アプリとのやり取りの瞬間に 1 つのクラブの範囲内でのみ行動することは想定されていません。

アプリへのナビゲーションは次のようになります: appname.com/clubName または clubName.appname.com

質問: 1. 選択したクラブに関するデータを保持する最善の方法は何ですか? セッションへの保存 (クラブ durint アプリの開始に関する情報を注入する) を実装しましたが、セッションの使用はむしろ非推奨のソリューションであることがわかりました。ApiController を使用しているため、セッションを取得するには、ルーティングをハックする必要がありました (カスタム RouteHandler を登録します)。セッションメカニズムはこの問題に適用できますか?

var session = HttpContext.Current.Session;
if (session != null)
{
   service.ClubName = session[CustomSessionKeys.ClubName.ToString()].ToString();
}
  1. 私たちの問題にサブドメインを使用するのは良い考えですか?

よろしくお願いします:)

4

2 に答える 2

0

まあ、あなたにはたくさんの選択肢があると思います!

  1. URLの一部としてクラブIDまたは名前を保持する、あなたが提案したルートのものに行きます。ユーザーにより多くの意味を与えるリンクが必要な場合は、これを選択します。
  2. クッキー!はい、情報が機密でない場合は、Cookie に保存します。この Cookie がサーバー側からのみアクセスされる場合は、HttpOnly にすることを忘れないでください。
  3. セッション。データが非常に機密性が高く、安全にする必要がない限り、私はセッションを選択しません。
于 2013-11-07T08:09:09.343 に答える
0

一般に、Web API は通常の MVC アプリとは異なる動作をします。
MVC アプリケーションでは、セッション Cookie を使用して、インターネットをステート マシンのように動作させます。ただし、これは Web API に対して一般的に行われていることではありません。Web API では、何らかの形式の認証を提供します (たとえば、ヘッダー認証フィールドを介して)。
ただし、リクエスト内ではもちろん、現在のユーザー、またはasp.netの用語で現在のプリンシパルを追跡したいと考えています。
委任ハンドラーを介して原則を設定します

HttpContext.Current.User = user;

この認証全体がどのように行われるかについてさらにコードが必要な場合は、お知らせください。

もちろん、これはすべてサーバー側でした。クライアント側では、必要な情報をセッション ストアに保持できます。ただし、代わりにローカル ストレージを使用することを検討することもできます (どのようなセマンティクスを与えたいかによって異なります)。どちらも同じように機能します。これらの両方に関する完全な情報については、W3C webstorage の仕様を参照してください。

于 2013-11-06T10:19:49.433 に答える