authorization#
需要AspNetRoles在表添加角色
CleanArchitecture.Infrastructure#
ServiceCollectionExtensions.cs
using CleanArchitecture.Domain.Entities;
using CleanArchitecture.Domain.Repositories;
using CleanArchitecture.Infrastructure.Persistence;
using CleanArchitecture.Infrastructure.Repositories;
using CleanArchitecture.Infrastructure.Seeders;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace CleanArchitecture.Infrastructure.Extensions;
public static class ServiceCollectionExtensions
{
public static void AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
{
services.AddDbContext<RestaurantsDbContext>(options => options.UseSqlServer(configuration.GetConnectionString("RestaurantsDb"))
.EnableSensitiveDataLogging());
services.AddIdentityApiEndpoints<User>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<RestaurantsDbContext>();
services.AddScoped<IRestaurantSeeder, RestaurantSeeder>();
services.AddScoped<IRestaurantsRepository, RestaurantsRepository>();
services.AddScoped<IDishesRepository, DishesRepository>();
}
}
控制器
[HttpPost]
[Authorize(Roles = UserRoles.Owner)]
public async Task<IActionResult> CreateRestaurant([FromBody] CreateRestaurantCommand command)
{
int id = await mediator.Send(command);
return CreatedAtAction(nameof(GetId), new { id }, null);
}