| using BlazorWebAssemblySample.Server.Data; |
| using BlazorWebAssemblySample.Server.Models; |
| using Microsoft.AspNetCore.Authentication; |
| using Microsoft.AspNetCore.ResponseCompression; |
| using Microsoft.EntityFrameworkCore; |
| using Casbin.AspNetCore.Authorization; |
| using Casbin.AspNetCore.Authorization.Transformers; |
| using System.Security.Claims; |
| |
| var builder = WebApplication.CreateBuilder(args); |
| |
| // Add services to the container. |
| var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); |
| builder.Services.AddDbContext<ApplicationDbContext>(options => |
| options.UseSqlite(connectionString)); |
| builder.Services.AddDatabaseDeveloperPageExceptionFilter(); |
| |
| builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true) |
| .AddEntityFrameworkStores<ApplicationDbContext>(); |
| |
| builder.Services.AddIdentityServer() |
| .AddApiAuthorization<ApplicationUser, ApplicationDbContext>(); |
| |
| builder.Services.AddAuthentication(); |
| //.AddIdentityServerJwt(); |
| |
| builder.Services.AddControllersWithViews(); |
| builder.Services.AddRazorPages(); |
| |
| //Add Casbin Authorization |
| builder.Services.AddCasbinAuthorization(options => |
| { |
| options.PreferSubClaimType = ClaimTypes.Email; |
| options.DefaultModelPath = Path.Combine("CasbinConfigs", "basic_model.conf"); |
| options.DefaultPolicyPath = Path.Combine("CasbinConfigs", "basic_policy.csv"); |
| |
| // Comment line below to use the default BasicRequestTransformer |
| // Note: Commenting the line means that the action methods MUST have [CasbinAuthorize()] attribute which explicitly specifies obj and policy. Otherwise authorization will be denied |
| options.DefaultRequestTransformerType = typeof(KeyMatchRequestTransformer); |
| }); |
| |
| var app = builder.Build(); |
| |
| // Configure the HTTP request pipeline. |
| if (app.Environment.IsDevelopment()) |
| { |
| app.UseMigrationsEndPoint(); |
| app.UseWebAssemblyDebugging(); |
| } |
| else |
| { |
| //app.UseExceptionHandler("/Error"); |
| // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. |
| app.UseHsts(); |
| } |
| |
| app.UseHttpsRedirection(); |
| |
| app.UseBlazorFrameworkFiles(); |
| app.UseStaticFiles(); |
| |
| app.UseRouting(); |
| |
| app.UseIdentityServer(); |
| app.UseAuthentication(); |
| app.UseCasbinAuthorization(); |
| app.UseAuthorization(); |
| |
| |
| app.MapRazorPages(); |
| app.MapControllers(); |
| app.MapFallbackToFile("index.html"); |
| |
| app.Run(); |