我有一个允许最终用户执行<Link>s
(包含许多API)或安排它作为后台作业运行的函数。
示例:Workflow
创建User1
,其中包含3个API(Workflow1
,Api1
,Api2
),并将其配置为每天上午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;
的凭据添加到请求中(因为它将作为预定作业自动运行)?
我决定use reflection to call an API by string name。
在直接执行API的情况下,如何在特定权限下运行它?
我已将我的代码放在User1
块中,但所有API都已成功触发:
using
答案 0 :(得分:1)
您有两种选择。
1-您可以匿名访问这些应用程序服务。如果您希望它是安全的,请发送加密的安全令牌。
2-你没有提到你的项目是MVC还是Angular。我假设你有Angular版本。您需要持有者令牌才能进行经过身份验证的请求。首先,您必须对用户进行身份验证并获取令牌。然后将此承载令牌添加到每个请求中。
你必须研究在asp.net核心中使用持有者令牌......
答案 1 :(得分:1)
在直接执行API的情况下,如何在特定权限下运行它?
您可以override current session values在using
区块内调用您的方法。
我已将我的代码放在
using
块中,但所有API都已成功触发
将您的API方法声明为public virtual
,因为AbpAuthorize
有一些限制。