我有一个net core 2.0应用程序和授权问题.我想使用具有特殊request.header和标准默认身份验证的自定义授权.首先,我在startup.cs中添加配置:
public IServiceProvider ConfigureServices(IServiceCollection services)
{
...
services.AddAuthorization(options =>
{
options.AddPolicy(DefaultAuthorizedPolicy, policy =>
{
policy.Requirements.Add(new TokenAuthRequirement());
});
});
services.AddSingleton<IAuthorizationHandler, AuthTokenPolicy>();
...
}
Run Code Online (Sandbox Code Playgroud)
和AuthTokenPolicy.cs
public class AuthTokenPolicy : AuthorizationHandler<TokenAuthRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, TokenAuthRequirement requirement)
{
var filterContext = context.Resource as AuthorizationFilterContext;
var response = filterContext.HttpContext.Response;
try
{
// some validation code
var isValidToken = isValidTokenTask.Result;
if (!isValidToken)
{
response.StatusCode = 401;
return Task.CompletedTask;
}
response.StatusCode = 200;
context.Succeed(requirement);
}
catch (Exception)
{
return Task.CompletedTask;
}
return …Run Code Online (Sandbox Code Playgroud) 我这里有一个 json https://api.nasa.gov/insight_weather/?api_key=DEMO_KEY&feedtype=json&ver=1.0,如下所示:
{
"782": {
"First_UTC": "2021-02-06T17:08:11Z",
"Last_UTC": "2021-02-07T17:47:46Z",
"Month_ordinal": 12,
"Northern_season": "late winter",
"PRE": {
"av": 721.77,
"ct": 113450,
"mn": 698.8193,
"mx": 742.2686
},
"Season": "winter",
"Southern_season": "late summer",
"WD": {
"most_common": null
}
},
"783": {
"First_UTC": "2021-02-07T17:47:46Z",
"Last_UTC": "2021-02-08T18:27:22Z",
"Month_ordinal": 12,
"Northern_season": "late winter",
"PRE": {
"av": 722.186,
"ct": 107270,
"mn": 698.7664,
"mx": 743.1983
},
"Season": "winter",
"Southern_season": "late summer",
"WD": {
"most_common": null
}
},
"sol_keys": [ "782", "783" ],
"validity_checks": { /* Some …Run Code Online (Sandbox Code Playgroud) 有一个代码:
<select name="department" class="form-control select" [(ngModel)]="departments" formControlName="departmentControl">
<option *ngFor="let department of departments" [ngValue]="department" [selected]="department.id == this.departmentid">
{{ department.name }}
</option>
</select>
Run Code Online (Sandbox Code Playgroud)
和功能:
isSelected(department): boolean {
debugger;
return department.id == this.departmentid;
}
Run Code Online (Sandbox Code Playgroud)
部门-是用户详细信息组件的嵌套组件。首次选择用户详细信息组件后,未选择部门。但是第二次一切正常。哪里有错?
是否有任何函数(如fold, map, filter),它获取 2 个数组和 lambda 函数(例如乘法)作为参数并返回第三个数组?
我用过循环,但是有更漂亮的方法吗?