C# 如何授权仅由管理员用户访问的属性?

C# 如何授权仅由管理员用户访问的属性?,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,如何允许“管理员”用户仅访问属性 我有这样一个“客户”类: 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; } //A

如何允许“管理员”用户仅访问属性

我有这样一个“客户”类:

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; } 
//Allow Admin user access only
[AdminUserOnly]
public string SSN { get; set; } 
}

我有一个UsersAPIController,它有一个GetCustomers方法,使用EF从数据库检索所有客户数据

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

因此,返回的数据包含仅用于管理员用户访问的SSN属性?

如果您返回的对象具有公共属性,则除了不设置非管理员属性的值之外,您将无法限制对该属性的访问。一旦您将该对象传递给消费者,我相信您无法再做任何事情


我将查看在
GetCustomers
中检查管理员授权,并填充属性(如果他们确实具有访问权限)。或者,您可以填充所有值,检查管理员权限并相应地清空它们。

您必须通过角色授权检查此链接@Adriano Repetti这是一个重复的链接吗?在最初的问题中没有提到角色,只有如何删除一个字段。不,对不起,是时候休息一下了。不涉及JSON。重新开放,,thanks@rashfmmnb我不想授权管理员角色在controller中访问GetCustomers方法,因为所有角色都应该访问该方法,而不是该方法返回的所有字段。由于GetCustomers方法可以被所有角色访问,我不想检查方法中的管理员授权。@kalno12为什么不?这正是你应该做的。检查调用方角色,如果不允许他查看该属性,则清除该属性。