2016-04-26 16 views
1

"管理者"ユーザーのみがプロパティにアクセスできるようにするにはどうすればよいですか?管理者ユーザーだけがアクセスするプロパティを許可するにはどうすればよいですか?

は、私はこのようなクラス「顧客」を持っている:

public class Customer 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Address { get; set; } 
    public string SSN { get; set; } 

}

私はEFを使用してデータベースからすべての顧客データを取得GetCustomersメソッドを持っているUsersAPIControllerを持っています。

public class CustomersAPIController : ApiController 
    { 
    // GET: api/CustomersAPI 
     public IQueryable<User> GetCustomers() 
     { 
      return db.Customers; 
     } 
} 

私はGetCustomersメソッドは、メソッドにアクセスするアプリケーションのユーザーは、「管理者」の役割を持っている唯一の顧客クラスの「SSN」プロパティをreurnたいです。 selectステートメントを使用して、 "GetCustomers"メソッドで管理者ユーザーの "SSN"プロパティを返すことで、必要な結果を得ることができました。ただし、Customerデータはアプリケーションの複数の場所で使用されるため、多くのコーディングが必要になります。データのみを管理ユーザアクセスのためのSSNプロパティが含まれて返されるので

//Allow Admin user access only 
[AdminUserOnly] 
public string SSN { get; set; } 

が、それはこのような何かすることは可能ですか?

+0

ロールで承認する必要があります。このリンクをチェックしてください。http://docs.asp.net/en/latest/security/authorization/roles.html – rashfmnb

+0

@Adriano Repettiどのように重複していますか?元の質問には役割の記述はなく、フィールドを削除する方法しかありません。 – ChrisBint

+0

申し訳ありませんが、休憩する時間です。 JSONは関係ありません。 Reopened、thanks –

答えて

2

パブリックプロパティを持つオブジェクトを返す場合は、管理者以外の場合は値を設定しないで、プロパティへのアクセスを制限することはできません。オブジェクトを消費者に渡すと、私はあなたが何かをさらに行うことはできないと信じています。

私は、GetCustomersの管理者権限を確認し、アクセス権がある場合はそのプロパティを入力します。または、すべての値を入力して管理者権限を確認し、それに従って管理者権限を空にすることもできます。

+0

** GetCustomers **メソッドはすべてのロールからアクセスできるので、メソッドの管理権限を確認する必要はありません。 – kalno12

+0

@ kalno12なぜか?それはあなたがすべきことです。発信者の役割を確認し、彼がそれを見ることが許可されていない場合は、そのプロパティを拭きます。 –

関連する問題