0

私はAsp.Net IDの周りに私の頭をラップしようとしています。しかし残念ながら、利用可能なドキュメントはあまり明確ではありませんし、私はちょうど私の頭の上にあると感じています:(Asp.Net IDはいつ作成され、ユーザーに割り当てられますか?

しかし、以下はすべての日の研究と読書に基づいて高いレベルの理解です。これらの主張を使用して、機能を有効/無効にすることができます。例えば、ユーザーが30歳と主張した場合、大人のみのコンテンツを表示することができますが、17歳であると主張する場合、彼/彼女に:)。さらに、「管理者」、「スーパーユーザー」などのユーザーに対する役割を使用して、アクセスを有効または無効にすることができます。 「管理者」ロールを持つユーザーの場合は、Xアクションメソッドへのアクセスを許可することができます。

しかし、私を混乱させ、私の頭を明確に包むことを許していないことがたくさんあります。

シナリオは、私は1つのコントローラで新しいアプリケーションを作成するとします。このコントローラーには、2つのアクションメソッドAddEditがあります。私はID = 10を持つユーザーは、「追加できる」と「編集することができます」が、ユーザーIDを持つユーザーは= 5「を追加することができます」この場合、各ユーザーのための2つの請求

new Claim { 
    UserId = 10, 
    ClaimType = "Can Add", 
    ClaimValue = null 
}, 

new Claim { 
    UserId = 10, 
    ClaimType = "Can Edit", 
    ClaimValue = null 
} 

new Claim { 
    UserId = 5, 
    ClaimType = "Can Edit", 
    ClaimValue = null 
} 

が必要になることを推測していますbyは編集できません。

これらのクレームはいつ作成され、ユーザーに割り当てられますか?これらのクレームは、手動でAspNetUserClaimsテーブルに挿入して、必要に応じて作成しますか?プロフィールからユーザーに割り当てますか?

新しいクレームを将来追加する必要がある場合、私は手動でこの新しいクレームを手動ですべてのユーザーに割り当てる必要がありますか?またはユーザーが継承できるデフォルトの役割にこれらの主張を割り当てる方法はありますか?

これは大きな問題ではないかもしれませんが、それはアイデンティティをよりよく理解するのに役立ちます。

答えて

1

ユーザーのログイン時にクレームを設定する必要があります。データベースに直接設定しないでください。申し立ての設定時期については、this postをご覧ください。

クレームは、ユーザーに関する情報です。その情報を承認(またはその他のもの)に使用することができます。

常に値をClaimsに設定する必要があります。そうしないと、存在しないクレームエラーが発生する可能性があります。

+0

私は今より混乱しています。クレームは一時的で、単一のセッションのみで利用できるのか、それとも永続的なのですか? clamsは、名前、電子メール、電話などのユーザーに関する情報を取得する場所ですか、Xの操作を実行できるか、またはその両方を実行できるかを私が知ることができる場所ですか?なんらかの理由で、私は、認可パッケージがボックスからの許可ベース認可をサポートしていないと考え始めました。これは私が実装する必要があり何とか許可を取って、それを1つのカスタムクレームに埋め込むものですか? – Jaylen

+0

承認はクレームに基づいていません(必要に応じてClaimAuthorizationAttributeを作成できますが、デフォルトではフレームワークにはありません)。ユーザーの名前、電子メール、または電話を永続的に保存する場合は、ユーザーにそれを入れます。ユーザーにデータを格納します。計算フィールドが必要な場合やあらゆる場所の情報だけが必要な場合は、クレームを使用してください。クレームはユーザーではなくアイデンティティに属することに注意してください。 –

+0

私は参照してください。情報ありがとうございます。カップルの最後の質問は、次にクレームが一時的なものかどうか、もしそうならデータベースからいつ削除されますか?また、役割ベースの認可は、箱の中で利用可能な唯一の認可機能ですか? Authorize(Policy = "何か")は何のために使われていますか?あなたがこれまでに提供した情報については、多くの方々に感謝しています。 – Jaylen

関連する問題