2017-10-24 7 views
0

ロールがクレームのサブセットであるアドバイスを読んで、ASP.NET IDでEFコアの実装を尋ねるクリーンな方法を検討していますVS 2017のASP.NET ID Core 2.0テンプレートにロール関連のテーブルを作成しないようにしてください。クレームのみが必要です。 テンプレートはASP.NETアイデンティティコア2.0からロール関連テーブルを削除する方法

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) 
     : base(options) 
    { 
    } 

    protected override void OnModelCreating(ModelBuilder builder) 
    { 
     base.OnModelCreating(builder); 
     // Customize the ASP.NET Identity model and override the defaults if needed. 
     // For example, you can rename the ASP.NET Identity table names and more. 
     // Add your customizations after calling base.OnModelCreating(builder); 
    } 
} 

を使用し、IdentityDbContextは、これらの役割に関連したテーブル移行ファイルを操作することなく、それらを取り除くためにどのように

https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore/IdentityDbContext.cs

を作成しますか?

答えて

1

あなたはできません。あなたがそうした場合、アイデンティティは機能しなくなる可能性が非常に高いです。それと同様に、アイデンティティは役割を利用します。それにもかかわらず、この機能を利用しないことを選択できます。

つまり、ある意味では、すべての認証アーチファクトは「主張」です。しかし、主張は抽象的な概念ですが、役割のようなものは具体的な実装を持っています。認可フィルタが必要な場合は、ロールを使用する必要があります。あなたはクレームを使うことができますが、それでは、とにかく役割の概念を再実装するだけでいいのです。車輪を再構築しないでください。

+0

クレームが抽象的な概念である理由についてさらに議論することはできますか?私はまだ具体的なものと見ることができるクレームでフィルタリングすることができます。 (?)https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims – Octopus

+0

暗黙の機能がないため抽象です。それらは単なるデータです。そのデータの周りに機能を作成する必要があります。たとえば、ユーザーが管理者であることを示すクレームを追加することができますが、クレームを引き出して値を確認し、ユーザーのステータスを決定するロジックが必要になります。ロールは、この機能を焼き付けた単なるクレームです。 –

+0

クレームとロールの違いを詳しく説明している関連ドキュメントがありますか?それは提供されたリンクで欠けているようです。ありがとう – Octopus

関連する問題