【发布时间】:2020-09-24 15:56:54
【问题描述】:
我有一个网络应用程序,它具有三个不同的用户角色 Admin、Reseller 和 Seller。每个卖家都连接到一个经销商。
假设我们想要在经销商向 API 发出请求时显示卖家列表: GET: api/v1/members/sellers
预期结果将是与该经销商相关联的所有卖家。控制器可能看起来像这样:
[HttpGet]
[MemberAuthorize(AllowGroup = "Admin,Reseller")]
[Route("sellers")]
public HttpResponseMessage GetSellers()
{
var member = _memberHelper.GetCurrentMember();
if (member.Role == "Reseller")
return sellersByReseller;
if (member.Role == "Admin")
return getAllSellers;
...
}
这可行,但在我看来它看起来并不漂亮,而且很难测试。
是否有另一种 C# Web API 方法可以用于此目的?与此类似的东西会非常整洁:
[HttpGet]
[MemberAuthorize(AllowGroup = "Reseller")]
[Route("sellers")]
public HttpResponseMessage GetSellers()
{
getSellersByReseller;
}
[HttpGet]
[MemberAuthorize(AllowGroup = "Admin")]
[RoutePrefix("sellers")]
public HttpResponseMessage GetSellersAsAdmin()
{
getAllSellers;
}
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api roles