如何授权管理员用户仅访问该属性?

时间:2016-04-26 15:32:10

标签: c# asp.net asp.net-web-api

如何允许" Admin"仅限用户?

我有一个班级"客户"像这样:

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; } 

}

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

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

我想让GetCustomers方法重新加入&#34; SSN&#34; Customers类的属性仅在访问该方法的应用程序用户具有&#34; Admin&#34;角色。通过使用select语句返回&#34; SSN&#34;我能够获得所需的结果。管理员用户在&#34; GetCustomers&#34;中的属性方法。但是,这需要大量编码,因为客户数据在应用程序的多个位置使用。

是否可以这样:

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

这样返回的数据是否只包含管理员用户访问的SSN属性?

1 个答案:

答案 0 :(得分:2)

如果要返回具有公共属性的对象,除非不设置值,否则您将无法限制对该属性的访问。一旦你将对象传递给消费者,我不相信你可以做任何进一步的事情。

我会查看GetCustomers中的管理员授权,并填写属性,如果他们有权访问。或者,您可以填充所有值并检查管理员权限并相应地清空它们。