var webScope = apiDescription.ActionDescriptor.GetFilterPipeline()
.Select(filterInfo => filterInfo.Instance)
.OfType<WebAuthorize>()
.SelectMany(attr => attr.Roles.Split(','))
.Distinct();
var mobileScope = apiDescription.ActionDescriptor.GetFilterPipeline()
.Select(filterInfo => filterInfo.Instance)
.OfType<MobileAuthorize>()
.SelectMany(attr => attr.Roles.Split(','))
.Distinct();
它之所以有效,是因为我在授权 API 调用时有两种不同的方法,如您所见,我有一个移动授权和一个 Web 授权,所以我的 api 调用看起来像这样:
[HttpGet]
[Route("something")]
[WebAuthorize(Code = PermissionCode, Type =PermissionType)]
public async Task<Dto> Getsomething()
{
return await unitOfWork.GetService<ISomething>().GetSomething();
}
使用API描述。RelativePath,我将检查相对路径是否等于我要添加的自定义标头的api调用,例如:
[HttpPost]
[Route("rename")]
[InHouseAuthorize(Code = PermissionCode, Type =PermissionType)]
public async Task<HttpResponseMessage> RenameDevice()
{
HttpRequestMessage request = Request ?? new HttpRequestMessage();
String deviceName = request.Headers.GetValues("deviceName").FirstOrDefault();
String deviceGuid = request.Headers.GetValues("deviceGuid").FirstOrDefault();
await unitOfWork.GetService<IDeviceService>().RenameDevice(deviceGuid, deviceName);
await unitOfWork.Commit();
return new HttpResponseMessage(HttpStatusCode.OK);
}
if (apiDescription.RelativePath.Contains("device/rename"))
{
operation.parameters.Add(new Parameter
{
name = "deviceGuid",
@in = "header",
description = "Add the Device Guid",
type = "string",
required = false
});
operation.parameters.Add(new Parameter
{
name = "DeviceName",
@in = "header",
description = "Add the Device Name",
type = "string",
required = false
});
}
我正在寻找处理此问题的最佳方法。
可以将属性 [FromHeader] 用于 Web 方法参数(或 Model 类中的属性),这些参数应在自定义标头中发送。像这样:
[HttpGet]
public ActionResult Products([FromHeader(Name = "User-Identity")]string userIdentity)
对我来说,这似乎是最简单的解决方案。至少它适用于 ASP.NET Core 2.1和Swashbuckle.AspNetCore 2.5.0。
我正在开发一个可视化引擎(简单的CAD风格)(使用python和pyopengl绑定),可以同时显示和动画多达10-20个身体。我使用VBO数据对象来存储顶点数据并显示每个主体。我想知道为VBO分配颜色的最佳(最实用、最简单、成本更低的GPU)方法是什么。每个机身都有统一的颜色,外观可以设置为透明-可选。据我所知,这可以用以下方法完成(我测试了方法1和2): GLF(R、G、B、A) GLMATE
我对拉雷维尔还不太熟悉。我有一个基本问题,在laravel中添加常量的最佳方法是什么。我知道我们用来添加常量的.env方法。我还制作了一个常量文件,用于我的项目。例如: 等等它最多可以达到100条或更多记录。那么,编写常量的最佳方法应该是什么呢。.env方法。还是添加constant.php文件? 谢啦
问题内容: 我正在阅读这篇文章:http : //eviltrout.com/2013/06/15/ember-vs- angular.html 它说, 由于缺乏约定,我想知道有多少Angular项目依赖于不良行为,例如直接在控制器内进行AJAX调用?由于依赖注入,开发人员是否将路由器参数注入指令中?AngularJS新手开发人员是否会以经验丰富的AngularJS开发人员认为惯用的方式来构造代码
问题内容: 在编写单元测试时,我经常遇到这样的情况,即测试中的某些对象的工作方式与实际环境中的工作方式不同。以一些接口为例。它具有和其他几个领域。逻辑上,一个配置等于s匹配时的另一个配置。但是,当谈到测试某些特定的实现时,例如,显然我想匹配 所有 字段。一种解决方案是不要在测试中使用,而只是遍历对象的属性或字段并进行比较,但这似乎不是一个好的解决方案。 因此,除了这种特定类型的情况外,我想从语义上
我理解如何(以及为什么)在JSX中添加空白,但我想知道什么是最佳实践,或者是否有任何真正的区别? 将两个元素都包裹在一个跨度中 将它们添加到一行中 用JS添加空间
问题内容: 我想创建辅助函数,以避免在Laravel 5的视图之间重复代码: view.blade.php 它们基本上是文本格式化功能。我在哪里以及如何使用这些功能创建文件? 问题答案: 在您的应用文件夹中创建一个文件,并使用composer加载它: 将其添加到文件后,运行以下命令: 如果您不喜欢将文件保留在目录中(因为它不是PSR-4命名空间的类文件),则可以执行网站的操作:将文件存储在boot