5

これはばかげた質問のように聞こえるかもしれませんが、どこかにトリックが欠けているのではないかと思っています。

シナリオは、Simple Memebership を使用する Web アプリケーションがあり、ユーザーはそれを使用するために登録できます (請求書プログラムなど)。

ただし、データベース/Web アプリに追加した情報のみを表示/更新/削除できる必要があります。

ユーザーが自分の情報にのみアクセスできるようにする最善の方法は何ですか?

すべてのテーブルにユーザー名フィールドを追加することですか。たとえば、次のようになります。

public class Invoice
{
     public int InvoiceId { get; set; }
     public int CustId { get; set; }
     public string UserName { get; set; }
}

public class Item
{
   public int ItemId { get; set; }
   public int InvoiceId { get; set; }
   public string UserName { get; set; }
}

...そして、データにアクセスするコントローラーでは、すべてのクエリ内でユーザー名のチェックを追加するだけです。

var Inv = db.Invoices.Where(x => x.UserName = User.Identity.Name);
var Itm = db.Items.Where(y => y.UserName = User.Identity.Name);

それが私が現在使用しているものですが、これがベストプラクティスであるかどうか疑問に思いましたか? または、MVC4 に移行するより簡単な方法があるとしたら?

UserProfileテーブルのUserNameまたはUserIdを使用するのが最善ですか、それとも問題ですか?

コメントに続いて明確さを追加するための更新

つまり、10 人のユーザーが登録し、全員が独自の請求書を作成しました。他のユーザーの請求書をユーザーに見せたくありません。

アドバイスをありがとう。

マーク

4

3 に答える 3

0

AuthorizeAttributeフィルターを global.asax ファイルに追加して、すべてのコントローラーのすべてのアクション メソッドを保護できます。

また、コントローラーは承認する必要はありません。

 [AllowAnonymous]
 public ActionResult LogOn() 

セキュア-your-asp-net-mvc-3-アプリケーション

于 2013-04-19T11:54:28.720 に答える