我们正在使用AngularJS Web 2 REST开发一个ASP.NET单页应用程序。我们正在使用OWIN中间件和OAuth。
我们的系统由客户和用户组成:
目前,我们正在每个控制器中使用以下签入:
[Route("api/clients/{clientId}/orders/{orderId}")]
public IHttpActionResult GetOrder(int clientId, int orderId)
{
if(UserComponent.GetUser(User.Identity.Name).ClientId != clientId)
{
return NotFound();
}
// Get order
return Ok(orderModel);
}有关更多细节,请参见下面的顺序(参见图表):

从本质上讲,客户端A的用户不应该能够从客户端B访问资源。
什么是针对客户端资源授权用户的最佳方法?
,我们是否可以将其推迟到OWIN (也许通过使用索赔)?
发布于 2015-01-21 09:17:57
声明是一个很好的选择,因为您可以发送带有令牌的clientId,并将其与每个请求一起发回,然后您可以根据数据存储来使用clientId检查用户,并验证用户对资源的访问,例如,可以通过过滤器进行访问。
对于用户请求的授权,从AuthorizeAttribute继承的自定义授权属性可以完成这项工作,您可以使用该属性来修饰操作,这将在操作之前运行,并根据clientid +资源授权用户,如果用户没有访问权限,则返回401 (未授权)。
请检查此问题,以了解有关自定义授权属性ASP.NET MVC 4 Custom Authorize Attribute with Permission Codes (without roles)的概念
https://stackoverflow.com/questions/28061352
复制相似问题