.net 在隔离的Azure函数中检索ClaimsPrincipal的推荐方法(从HttpRequestData)

bsxbgnwa  于 2023-04-13  发布在  .NET
关注(0)|答案(1)|浏览(175)

环境:AzureFunction v4,Net 7,独立函数
是否有Microsoft推荐的从HttpRequestData(https://learn.microsoft.com/en-us/dotnet/api/microsoft.azure.functions.worker.http.httprequestdata?view=azure-dotnet)检索ClaimsPrincipal的方法?
我找到了以下两个选择
1.使用mvc包与Azure函数:https://github.com/Azure/azure-functions-host/issues/4212#issuecomment-480378690。我说的是这个软件包https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Abstractions
1.实现以下任意一种自定义解决方案:2.1 https://adamstorr.azurewebsites.net/blog/using-azure-functions-middleware-to-access-claimsprincipal-in-azure-static-web-apps 2.2本地开发Azure函数
看起来使用MVC包是最简单的选择。
然而,我没有看到这两种方法的比较或应该使用的建议。如果你能列出两种方法的缺点/优点,或者提供一个链接到一个文章/文档,研究这个问题,那就太好了。

3xiyfsfu

3xiyfsfu1#

.Net 7只使用函数应用程序的隔离进程和Microsoft.Azure.Functions.Worker.Http库。
不能将Microsoft.AspNetCore.mvc与.Net 7函数应用程序一起使用。
即使你通过一个nuget添加了Microsoft.AspNetCore.mvc(你必须使用.Net 7函数应用程序),并将你的函数连接到HttpRequest上,它也不会工作,它只是在函数调用时设置为null...
您可以通过HttpRequestData对象访问FunctionContext,但这仍然不会像MVC HttpContext那样给予您用户声明。如果您想从授权头中提取它们,您必须编写中间件来实现,如以下示例所示:https://adamstorr.azurewebsites.net/blog/using-azure-functions-middleware-to-access-claimsprincipal-in-azure-static-web-apps
您可以将ClaimsPrincipal指定为函数参数,但它将等于null。

相关问题