C# 如何基于用户/凭据在web api中动态显示控制器

C# 如何基于用户/凭据在web api中动态显示控制器,c#,asp.net,asp.net-mvc,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Web Api,我有一个带有四个控制器的web api。在这四个控制器中,我需要让用户只访问一个控制器,但确保其他用户能够访问其余的控制器 我使用了[ApiExplorerSettingsIgnoreApi=true]属性,但希望有一种更好的方法来动态管理控制器。web api由两个不同的用户访问,我希望其中一个用户仅访问某个控制器。知道如何执行此操作吗?您可以在控制器和操作上指定用户和角色。例如: // Restrict by user: [Authorize(Users="Alice,Bob")] publ

我有一个带有四个控制器的web api。在这四个控制器中,我需要让用户只访问一个控制器,但确保其他用户能够访问其余的控制器


我使用了[ApiExplorerSettingsIgnoreApi=true]属性,但希望有一种更好的方法来动态管理控制器。web api由两个不同的用户访问,我希望其中一个用户仅访问某个控制器。知道如何执行此操作吗?

您可以在控制器和操作上指定用户和角色。例如:

// Restrict by user:
[Authorize(Users="Alice,Bob")]
public class ValuesController : ApiController
{
}

// Restrict by role:
[Authorize(Roles="Administrators")]
public class ValuesController : ApiController
{
}

这些可以是类级别或操作方法级别的位置。

如果我添加这些,用户仍将看到api定义,但在发出请求时,请求将在何时被验证。是否可以隐藏该特定用户的帮助页,以便他们看不到其他控制器的api定义?@JohnKim:他们以何种方式看到api定义?为什么会出现问题?问题是因为他们是其他的控制器,他们不应该在定义中看到。我的计划是在我准备的文档中为他们提供URL和函数,以这种方式列出操作和URL,我曾设想给他们一个自己有api定义的文档,因为api包含其他他们不应该看到的控制器和函数。@JohnKim:所以当你创建文档时,不要包含你不想告诉他们的api端点。手动创建的文档与Web API无关。