2017-03-08 4 views
1

私はMVC初心者であり、ユーザーが登録してログインできる(すでに、MVCのIdentityサンプルを使用している)シンプルなWebアプリケーションを構築しようとしています。例えば、リスト内の項目を実行するために)、それらが基本的にバインドされているかどうかを指定します。ASP .Net MVCユーザーの所有権と承認

特に指定のない限り、do to doアイテムは他のユーザーに表示または編集できません。

私がやってみようとしている最初のステップは、ユーザーのアイテムだけでリストを作成することです。

誰かが正しい方向に向けることができますか?

答えて

1

ASP.NET Identityを使用してください。あなたの登録とユーザー管理のいずれかを処理します。rolesclaimsを希望に応じて定義することもできます。ここでは、以下のようなモデルがあり、エンティティが定義されたユーザーによって構築されていることを確認したい場合、外来キーとしてモデルにUserIdを含めるため、このユーザーによって定義されるようにUserIdを含めます。

public class CustomModel 
{ 
    public Guid Id { get; set; } 
    public string ObjectExample { get; set; } 
    public string ObjectExample2 { get; set; } 
    //FK to user 
    public string UserId { get; set; } 
} 

いつでも、あなたは以下のようにはuserIdを取得するために、アイデンティティ・メソッドを呼び出すことができるユーザーIDの値を取得したい:

User.Identity.GetUserId() 

希望これはあなたのアイデアを提供します。

UPDATE

は、データベースへのデータの最初のセットを挿入したいとしましょう、それは、ユーザが定義する必要があります。

var entity = new CustomModel 
{ 
    Id = Guid.NewGuid(), 
    ObjectExample = "string", 
    ObjectExample2 = "secString", 
    UserId = User.Identity.GetUserId() //Identity Lib will provide this method for you 
}; 
using(MyDbContext context = new MyDbContext()) 
{ 
    context.CustomModel.Add(entity); 
} 
+0

ありがとう、これは私を正しい道で助けました!迅速なフォローアップの質問:オブジェクトを作成すると、私はどのように自動的に自分のuserIdを設定するのですか? – mwentosana

+0

@Iris最初にEntityフレームワークのコードを使用していますか? – Valkyrie

+0

私はusindエンティティフレームワークコードを最初にしています。 – mwentosana

2

私の意見では、それはアプリケーションのロジックの多くであり、認可ではありません。実装する最も簡単な方法は、現在ログインしているユーザーが作成したアイテムを照会し、そのアイテムを表示または編集する場合です。

認可は、ユーザーおよび特定の事前定義済みの認可ルールに関する情報に基づいて、ユーザーが特定のページにアクセスすることを許可または制限するか、ポータルで特定のアクションを実行することを許可/制限することについてです。

  1. のみ管理者ユーザーが一部のコンテンツ(役割ベースの権限)/編集を見ることが許可されている
  2. 18歳(請求項に基づく認証)が経過しているユーザーへのアクセスを許可する
  3. :ここでは例のカップルは、特定の地理的位置からのユーザーのみ(再度クレームベース)

例からわかるように、認可は、(あなたの場合のように)データベースから取得する行をフィルタリングするには適していません。

大まかに、アクションまたは権限属性を持つページをマークしようとしている可能性があります。だからあなたが "個人化された承認"をしたいのであれば、あなたは何をしようとしているのではなく、ユーザーごとにアクション/ページを作成する必要がありますか?

+0

よく説明されています。 – Valkyrie

+0

ありがとう、私は間違いなく認可と関連事項についてもっと自分自身に知らせる必要があります! – mwentosana