Я не понимаю, какой тип авторизации в проекте: авторизация на основе утверждений или политик.
это зависит от проекта безопасности проекта или они одинаковы?
в соответствии с документом Microsoft мы можем настроить и использовать претензии следующим образом:
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)));
}
}
, а затем использовать эту политику так же, как утверждают в моем контроллере.
Как вы видите, оба делают одно. контролируют пользователя, присоединяющегося к дате. Что лучше - это внимание для лучшей скорости и безопасности?
или похоже оба одинаковы?