Enigmatry.Entry.AspNetCore.Authorization
9.1.1-preview.3
See the version list below for details.
dotnet add package Enigmatry.Entry.AspNetCore.Authorization --version 9.1.1-preview.3
NuGet\Install-Package Enigmatry.Entry.AspNetCore.Authorization -Version 9.1.1-preview.3
<PackageReference Include="Enigmatry.Entry.AspNetCore.Authorization" Version="9.1.1-preview.3" />
<PackageVersion Include="Enigmatry.Entry.AspNetCore.Authorization" Version="9.1.1-preview.3" />
<PackageReference Include="Enigmatry.Entry.AspNetCore.Authorization" />
paket add Enigmatry.Entry.AspNetCore.Authorization --version 9.1.1-preview.3
#r "nuget: Enigmatry.Entry.AspNetCore.Authorization, 9.1.1-preview.3"
#:package Enigmatry.Entry.AspNetCore.Authorization@9.1.1-preview.3
#addin nuget:?package=Enigmatry.Entry.AspNetCore.Authorization&version=9.1.1-preview.3&prerelease
#tool nuget:?package=Enigmatry.Entry.AspNetCore.Authorization&version=9.1.1-preview.3&prerelease
Authorization Building Block
Building Block with startup extensions for enabling permission-based authorization
Registration
You can use the AppAddAuthorization
extension method on IServiceCollection
.
This will register RequirementHandlers for permission-based authorization for the specified permission type (TPermission):
public void ConfigureServices(IServiceCollection services)
{
...
services.AppAddAuthorization<TPermission>();
}
Permission type
Underneath the covers, policy based authentication is used through a custom IAuthorizationPolicyProvider
implementation and permissions are encoded to a policy name.
As a result, the permission type must be capable of converting to and from a string.
Types such as 'String', 'Enum', and 'int' are automatically supported. If you want to use a custom permission type, you must implement [System.ComponentModel.TypeConverter].(https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.typeconverter).
For the rest of the examples in this document, let's use an enum as the permission type:
public enum PermissionId
{
Read,
Write
}
Securing API methods
To secure a method on a controller, you can now use UserHasPermission with list of requred permissions:
[HttpGet("UserWithPermissionIsAllowed")]
[UserHasPermission<PermissionId>(PermissionId.Read, PermissionId.Write)]
public IEnumerable<WeatherForecast> UserWithPermissionIsAllowed() => Array.Empty<WeatherForecast>();
Implementing authorization checks
Because the actual check if the current user has the right permissions can be application-specific, this building block only provides an interface IAuthorizationProvider
, with no default implementation:
public interface IAuthorizationProvider<in TPermission> where TPermission : notnull
{
public bool AuthorizePermissions(IEnumerable<TPermission> permissions);
}
Applications using this building block need to register their own implementation:
services.AddScoped<IAuthorizationProvider<PermissionId>, SampleAuthorizationProvider>();
public class SampleAuthorizationProvider : IAuthorizationProvider<PermissionId>
{
public bool AuthorizePermissions(IEnumerable<PermissionId> permissions) =>
// Let's assume the current user only has the 'Read' permission
permissions.Any(p => p == PermissionId.Read);
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Enigmatry.Entry.AspNetCore (>= 9.1.1-preview.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
9.1.1-preview.5 | 139 | 8/8/2025 |
9.1.1-preview.4 | 91 | 6/27/2025 |
9.1.1-preview.3 | 119 | 6/4/2025 |
9.1.0 | 147 | 6/3/2025 |
9.0.1-preview.8 | 122 | 5/26/2025 |
9.0.1-preview.7 | 204 | 5/13/2025 |
9.0.1-preview.6 | 207 | 5/9/2025 |
9.0.1-preview.5 | 147 | 5/7/2025 |
9.0.1-preview.4 | 123 | 4/30/2025 |
9.0.1-preview.2 | 128 | 4/1/2025 |
9.0.0 | 640 | 2/26/2025 |
8.1.1-preview.3 | 125 | 5/7/2025 |
8.1.1-preview.1 | 129 | 4/1/2025 |
8.1.0 | 473 | 2/19/2025 |
8.0.1-preview.4 | 74 | 2/7/2025 |
8.0.1-preview.2 | 56 | 1/15/2025 |
8.0.0 | 1,023 | 11/27/2024 |
3.4.6-preview.10 | 70 | 11/27/2024 |
3.4.3 | 444 | 10/22/2024 |
3.4.2 | 498 | 10/11/2024 |
3.4.1 | 141 | 10/9/2024 |
3.4.0 | 123 | 10/9/2024 |
3.3.2 | 254 | 8/28/2024 |
3.3.2-preview.7 | 85 | 8/27/2024 |
3.3.1 | 318 | 7/16/2024 |
3.3.1-preview.4 | 73 | 7/12/2024 |
3.3.0 | 1,120 | 6/20/2024 |
3.2.1-preview.4 | 72 | 6/17/2024 |
3.2.1-preview.1 | 72 | 5/23/2024 |
3.2.0 | 832 | 4/3/2024 |
3.1.1-preview.1 | 80 | 3/13/2024 |
3.1.0 | 344 | 3/8/2024 |
3.1.0-preview.2 | 138 | 2/19/2024 |
3.0.1-preview.2 | 1,135 | 2/9/2024 |
3.0.1-preview.1 | 89 | 1/24/2024 |
3.0.0 | 369 | 1/15/2024 |
3.0.0-preview.14 | 112 | 1/9/2024 |
3.0.0-preview.12 | 77 | 1/9/2024 |
3.0.0-preview.5 | 74 | 1/10/2024 |
3.0.0-preview.2 | 134 | 12/28/2023 |
3.0.0-preview | 171 | 12/20/2023 |
2.1.0 | 188 | 12/28/2023 |
2.0.1-preview.3 | 120 | 12/1/2023 |
2.0.1-preview.2 | 94 | 11/29/2023 |
2.0.1-preview.1 | 89 | 11/28/2023 |
2.0.0 | 274 | 11/8/2023 |
2.0.0-preview.3 | 467 | 10/27/2023 |
2.0.0-preview.2 | 90 | 10/27/2023 |
2.0.0-preview.1 | 90 | 10/27/2023 |
2.0.0-preview | 146 | 10/27/2023 |
1.1.500 | 158 | 10/27/2023 |
1.1.495 | 882 | 9/24/2023 |
1.1.486 | 478 | 9/13/2023 |
1.1.484 | 173 | 9/7/2023 |
1.1.482 | 171 | 9/6/2023 |
1.1.480 | 202 | 8/24/2023 |
1.1.477 | 522 | 8/2/2023 |
1.1.464 | 183 | 7/5/2023 |
1.1.447 | 236 | 5/26/2023 |