如何允许" 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属性?
答案 0 :(得分:2)
如果要返回具有公共属性的对象,除非不设置值,否则您将无法限制对该属性的访问。一旦你将对象传递给消费者,我不相信你可以做任何进一步的事情。
我会查看GetCustomers
中的管理员授权,并填写属性,如果他们有权访问。或者,您可以填充所有值并检查管理员权限并相应地清空它们。