【发布时间】:2017-10-31 08:40:50
【问题描述】:
我有一个函数允许最终用户执行Workflow(包含许多 API)或安排它作为后台作业运行。
示例:User1 创建 Workflow1,其中包含 3 个 API(Api1、Api2、Api3),并将其配置为每天早上 9 点运行。
我使用HttpClient 像这样调用每个 API:
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;
如何在用户未登录应用程序时将User1 的凭据添加到请求中(因为它将作为计划作业自动运行)?
更新 1
我决定use reflection to call an API by string name。
在直接执行API的情况下,如何在特定权限下运行?
更新 2
我已将代码放入 using 块中,但所有 API 均已成功触发:
using (_session.Use(1, 3)) // 3 is the Id of User1, who has no permissions
{
// Execute operator
switch (input.Operator.Type)
{
case "api":
executeApiResult = await ExecuteApi(input);
break;
case "procedure":
executeApiResult = await ExecuteProcedure(input);
break;
default:
return new ExecuteOperatorOutput
{
Result = new ExecuteOperatorResult { Status = false, Message = $"Wrong operator type: {input.Operator.Type}" },
WorkflowStatus = false
};
}
}
【问题讨论】:
标签: asp.net-web-api dotnet-httpclient aspnetboilerplate