授权类型在asp.net核心

问题描述 投票:1回答:1

我困惑的使用项目,该项目授权类型的:要求或基于策略的授权。这是依赖于项目的安全设计?或者他们是一样的吗?根据微软的文档,我们可以配置和使用的权利要求如下:

private async Task CreateUserAndClaim(IServiceProvider serviceProvider) 
{
var claimList = (await UserManager.GetClaimsAsync(user)).Select(p => p.Type);  
if (!claimList.Contains("DateOfJoing")){  
    await UserManager.AddClaimAsync(user, new Claim("DateOfJoing", "09/25/1984"));  
}  
}

然后使用此权利要求如下:

public void ConfigureServices(IServiceCollection services) 
{
 services.AddAuthorization(options =>  
{  
    options.AddPolicy("IsAdminClaimAccess", policy => policy.RequireClaim("DateOfJoing")); 
}

[Authorize(Policy = "IsAdminClaimAccess")]  
public IActionResult TestMethod1(){}

和配置和使用的政策如下:

public class MinimumTimeSpendRequirement: IAuthorizationRequirement  
{
public MinimumTimeSpendRequirement(int noOfDays)  
{  
    TimeSpendInDays = noOfDays;  
}  

protected int TimeSpendInDays { get; private set; }  
}

public class MinimumTimeSpendHandler : AuthorizationHandler<MinimumTimeSpendRequirement>
{
...
var dateOfJoining = Convert.ToDateTime(context.User.FindFirst(  
        c => c.Type == "DateOfJoining").Value);  
}

public void ConfigureServices(IServiceCollection services)  
{
services.AddAuthorization(options =>  
 {  
    ...  
    ...  
    options.AddPolicy("IsAdminPolicyAccess", policy => policy.Requirements.Add(new MinimumTimeSpendRequirement(365)));  
 } 
}

然后使用此策略一样在我的控制器要求的。正如你看到的,无论是做一个thing.controll用户加入date.which更好?是注意力更好的速度和安全性?或者它看起来都是一样的吗?

c# asp.net-core authorization
1个回答
3
投票

索赔是定义用户的东西,这是一个关键 - 值对。

年龄:30 |性别:男|名称:鲍勃·马利|电子邮件:[email protected]

你得到的图片。然后,您可以实现基于要求和价值的授权检查。

进一步

您可以定义一个政策,政策是需要以获得访问遵守的东西。它可以由多个如权利要求检查。

所以,你可以做一个策略:当值超过18,其中性别是男年龄:IsMaleAndOver18,需要用户有2个说法。

当实现他们看起来在代码中,但在现实相似,它们有很大的不同。

© www.soinside.com 2019 - 2024. All rights reserved.