如何在特定用户权限下调用Web API?

时间:2017-10-31 08:40:50

标签: asp.net-web-api dotnet-httpclient aspnetboilerplate

我有一个允许最终用户执行<Link>s(包含许多API)或安排它作为后台作业运行的函数。

示例:Workflow创建User1,其中包含3个API(Workflow1Api1Api2),并将其配置为每天上午9点运行

我使用Api3来调用每个API:

HttpClient

当用户未登录到应用程序时,如何将var client = new HttpClient { BaseAddress = new Uri("http://localhost/") }; client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = client.PostAsJsonAsync("/api/services/myApp/workflow/Api1?input=something", "").Result; 的凭据添加到请求中(因为它将作为预定作业自动运行)?

更新1

我决定use reflection to call an API by string name

在直接执行API的情况下,如何在特定权限下运行它?

更新2

我已将我的代码放在User1块中,但所有API都已成功触发:

using

2 个答案:

答案 0 :(得分:1)

您有两种选择。

1-您可以匿名访问这些应用程序服务。如果您希望它是安全的,请发送加密的安全令牌。

2-你没有提到你的项目是MVC还是Angular。我假设你有Angular版本。您需要持有者令牌才能进行经过身份验证的请求。首先,您必须对用户进行身份验证并获取令牌。然后将此承载令牌添加到每个请求中。

你必须研究在asp.net核心中使用持有者令牌......

答案 1 :(得分:1)

  

在直接执行API的情况下,如何在特定权限下运行它?

您可以override current session valuesusing区块内调用您的方法。

  

我已将我的代码放在using块中,但所有API都已成功触发

将您的API方法声明为public virtual,因为AbpAuthorize有一些限制。