gpt4 book ai didi

asp.net-web-api - 如何在 asp .net core 中处理具有相同路由和不同授权属性的不同操作

转载 作者:行者123 更新时间:2023-12-05 06:34:32 24 4
gpt4 key购买 nike

我正在使用一些自定义中间件使用 ASP.Net Core 2 开发一些 Web-API 项目,该中间件将从第三方服务获得的授权信息转换为新的 Claim Identity,并将其添加到 http 上下文用户声明主体.我还实现了一些自定义授权策略提供程序,用于检查添加的声明身份以获得所需的权限和角色。

现在我想在同一 Controller 上使用相同的路由执行如下两个操作:

[Route("api/[controller]")]
public class StatesController : Controller
{

[Authorize("PaiedUser")]
[HttpGet(Name = "GetStates")]
public IActionResult GetStatesPaied(StateHttpRequestParameter requestResourceParameter)
{ //some code here to handle the paied user request}

[Authorize("FreeUser")]
[HttpGet(Name = "GetStates")]
public IActionResult GetStatesFree(StateHttpRequestParameter requestResourceParameter)
{ //some code here to handle the free user request}
}

在运行时我得到了这个异常,

Microsoft.AspNetCore.Mvc.Internal.AmbiguousActionException:多个 Action 匹配。以下操作匹配路由数据并满足所有约束:

SaMonitoring.API.Controllers.StatesController.GetStatesFree(SaMonitoring.API)SaMonitoring.API.Controllers.StatesController.GetStatesPaied(SaMonitoring.API)

我怎样才能实现这种行为?

最佳答案

我认为这里的问题是就 MVC 而言,角色并不相互排斥。有人可能会同时陷入这两种情况,这使得它变得模棱两可。我认为您最好在单个函数中检查用户的角色并适本地提供结果。

关于asp.net-web-api - 如何在 asp .net core 中处理具有相同路由和不同授权属性的不同操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50211576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com