Changeset e294f7d
- Timestamp:
- 03/19/26 20:55:06 (4 months ago)
- Branches:
- main
- Children:
- b62cefc
- Parents:
- 877c13c
- Files:
-
- 9 added
- 6 edited
-
ChapterX.API/ChapterX.API.csproj (modified) (1 diff)
-
ChapterX.API/Controllers/AuthController.cs (added)
-
ChapterX.API/Program.cs (modified) (2 diffs)
-
ChapterX.API/appsettings.json (modified) (1 diff)
-
ChapterX.Application/Auth/IJwtTokenService.cs (added)
-
ChapterX.Application/Auth/LoginHandler.cs (added)
-
ChapterX.Application/Auth/LoginRequest.cs (added)
-
ChapterX.Application/Auth/LoginResponse.cs (added)
-
ChapterX.Application/Auth/RegisterHandler.cs (added)
-
ChapterX.Application/Auth/RegisterRequest.cs (added)
-
ChapterX.Application/Auth/RegisterResponse.cs (added)
-
ChapterX.Application/ChapterX.Application.csproj (modified) (1 diff)
-
ChapterX.Infrastructure/ChapterX.Infrastructure.csproj (modified) (1 diff)
-
ChapterX.Infrastructure/DependencyInjection.cs (modified) (2 diffs)
-
ChapterX.Infrastructure/Services/JwtTokenService.cs (added)
Legend:
- Unmodified
- Added
- Removed
-
ChapterX.API/ChapterX.API.csproj
r877c13c re294f7d 8 8 9 9 <ItemGroup> 10 <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0" /> 10 11 <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0"> 11 12 <PrivateAssets>all</PrivateAssets> -
ChapterX.API/Program.cs
r877c13c re294f7d 1 1 using ChapterX.Application; 2 2 using ChapterX.Infrastructure; 3 using Microsoft.AspNetCore.Authentication.JwtBearer; 4 using Microsoft.IdentityModel.Tokens; 3 5 using System.Reflection; 6 using System.Text; 4 7 5 8 var builder = WebApplication.CreateBuilder(args); … … 10 13 { 11 14 options.CustomSchemaIds(type => type.FullName); 15 options.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme 16 { 17 Name = "Authorization", 18 Type = Microsoft.OpenApi.Models.SecuritySchemeType.Http, 19 Scheme = "Bearer", 20 BearerFormat = "JWT", 21 In = Microsoft.OpenApi.Models.ParameterLocation.Header, 22 Description = "Enter your JWT token" 23 }); 24 options.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement 25 { 26 { 27 new Microsoft.OpenApi.Models.OpenApiSecurityScheme 28 { 29 Reference = new Microsoft.OpenApi.Models.OpenApiReference 30 { 31 Type = Microsoft.OpenApi.Models.ReferenceType.SecurityScheme, 32 Id = "Bearer" 33 } 34 }, 35 Array.Empty<string>() 36 } 37 }); 12 38 }); 13 39 14 builder.Services.AddAuthentication(); 40 builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) 41 .AddJwtBearer(options => 42 { 43 options.TokenValidationParameters = new TokenValidationParameters 44 { 45 ValidateIssuer = true, 46 ValidateAudience = true, 47 ValidateLifetime = true, 48 ValidateIssuerSigningKey = true, 49 ValidIssuer = builder.Configuration["Jwt:Issuer"], 50 ValidAudience = builder.Configuration["Jwt:Audience"], 51 IssuerSigningKey = new SymmetricSecurityKey( 52 Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!)) 53 }; 54 }); 15 55 builder.Services.AddAuthorization(); 16 56 -
ChapterX.API/appsettings.json
r877c13c re294f7d 6 6 } 7 7 }, 8 "AllowedHosts": "*" 8 "AllowedHosts": "*", 9 "Jwt": { 10 "Key": "change-this-to-a-long-secret-key-at-least-32-chars!!", 11 "Issuer": "ChapterX", 12 "Audience": "ChapterX" 13 } 9 14 } -
ChapterX.Application/ChapterX.Application.csproj
r877c13c re294f7d 8 8 9 9 <ItemGroup> 10 <PackageReference Include="BCrypt.Net-Next" Version="4.0.3" /> 10 11 <PackageReference Include="MediatR" Version="14.1.0" /> 11 12 <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.0" /> -
ChapterX.Infrastructure/ChapterX.Infrastructure.csproj
r877c13c re294f7d 8 8 9 9 <ItemGroup> 10 <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0" /> 10 11 <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0"> 11 12 <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> -
ChapterX.Infrastructure/DependencyInjection.cs
r877c13c re294f7d 1 1 using ChapterX.Application.Abstractions; 2 using ChapterX.Application.Auth; 2 3 using ChapterX.Domain.Repositories; 3 4 using ChapterX.Infrastructure.Data.DataContext; 4 5 using ChapterX.Infrastructure.Repositories; 6 using ChapterX.Infrastructure.Services; 5 7 using Microsoft.EntityFrameworkCore; 6 8 using Microsoft.Extensions.Configuration; … … 17 19 18 20 services.AddScoped<IApplicationDbContext>(sp => sp.GetRequiredService<ApplicationDbContext>()); 21 services.AddScoped<IJwtTokenService, JwtTokenService>(); 19 22 20 23 services.AddScoped<IUserRepository, UserRepository>();
Note:
See TracChangeset
for help on using the changeset viewer.
