0

私は ASP.NET MVC4 の使用方法を学習しており、ユーザーとユーザー ロールの認証と、エンティティ フレームワークを使用した SQL へのデータの投稿について頭を悩ませています。

ただし、特定のユーザーに固有のデータを投稿および取得するためのガイド/リソース (正しい用語がわからない可能性があります) を見つけることができませんでした。たとえば、各ユーザーに個人的なデータを保存するサイトである場合、ユーザーは自分が作成したエントリのみをどのように見るでしょうか。

これをしようとするとき、どのパターン/デザインを使用しますか?

4

2 に答える 2

1

特定のデータのサンドボックスの作成は、通常、認証に関連付けられています。これには、ASP.Net を介してさまざまな方法でアクセスできます。

まず第一に、ログインしていない場合でも、すべてのユーザーが識別されます。ユーザーはセッション ID を取得します。基本的に、このユーザーのメモリ内に、ユーザー関連の情報を保存できる小さな場所を作成します。セッションは、各ユーザーにとって壁に囲まれた庭と考えてください。

 Session["UserFullname"]

これは機能しますが、Session は時間によって制限されているため、非常に不安定であることに注意してください。それを利用しますが、それに依存しないでください。

次の方法は、ユーザーを認証することです。これは Cookie を使用して行われますが、通常は ASP.Net メンバーシップまたはその他の認証プロバイダーによって透過的に処理されます。認証されたユーザーにアクセスするには、コントローラー アクションで単純な行を使用するだけです。

// User is the property
User.Identity.Name

これらの方法はどちらも、ユーザー固有のデータを照会するために使用するユーザーに関する情報を保存できます。

 Select * From Orders Where UserId = *User.Identity.Name*

Web 環境にいる限り、Session と User の両方に HttpContext.Current からもアクセスできることに注意してください。

 HttpContext.Current.User
 HttpContext.Current.Session

コントローラー内にいない場合、または HttpContext へのアクセスをまだ許可していない別のクラス内にいない場合を除き、この方法でそれらにアクセスする必要はありません。HttpContext が利用できない Web アプリケーションの外部でコードが使用される可能性があるため、この方法もお勧めしません。

お気軽に質問してください。

于 2013-06-10T13:02:10.850 に答える
0

これは mvc に関するものではなく、データを特定のユーザーに関連付ける問題に関するものです。ユーザーに対してデータの一部をどのように識別するかを自問する必要があります。

これを行う方法は、何らかの形でデータ ストア内のデータをユーザーに関連付けることです。リレーショナル データベースでは、ユーザー テーブルを用意し、そのテーブルの一意のキーを使用してデータを Order などの別のテーブルに挿入することでこれを行います。注文にはユーザー ID があります。

ユーザーがログインすると、その ID をセッションに保存し、それを使用して ID に基づいて注文を除外できます。

于 2013-06-10T05:06:09.943 に答える