基于Ardalis清洁架构模板,如何组织ASP.NET Core API与React+TS Vite项目?
针对你的项目结构问题的解决方案
1. ASP.NET Core认证Web API的放置位置
遵循Ardalis清洁架构的分层原则,认证Web API逻辑应直接整合到现有CodeSave.Web项目中:
- 清洁架构中,Web层属于最外层的「交付机制」,负责处理HTTP请求、认证授权、路由等与外部交互的逻辑。你可以在
CodeSave.Web内新增Controllers/AuthController,实现登录、注册、令牌刷新等认证端点,这完全符合分层职责,无需额外拆分项目。 - 如果你的认证逻辑涉及复杂的身份管理(比如自定义用户存储、角色权限体系),可以在
src目录下新增CodeSave.Identity项目,将身份相关的基础设施实现(如EF Core用户上下文、自定义身份验证服务)放在这里,再让CodeSave.Web引用该项目。但认证API端点仍需保留在CodeSave.Web中,因为这属于交付层的核心职责。
2. 前端项目的放置位置
需要创建独立的前端目录,建议在根目录下新建client或frontend文件夹,与src、tests同级,将React+Vite项目放在该目录下(例如client/CodeSave.Frontend)。
调整后的目录结构示例:
├── Directory.Build.props ├── Directory.Packages.props ├── docs ├── global.json ├── icon.png ├── CodeSave.sln ├── LICENSE ├── nuget.config ├── README.md ├── src │ ├── CodeSave.Core │ ├── CodeSave.Infrastructure │ ├── CodeSave.SharedKernel │ └── CodeSave.Web ├── tests │ ├── CodeSave.FunctionalTests │ ├── CodeSave.IntegrationTests │ └── CodeSave.UnitTests └── client └── CodeSave.Frontend ├── src ├── vite.config.ts ├── package.json └── ...(前端其他文件)
这种结构彻底实现了前后端代码的物理分离,符合清洁架构「关注点分离」的核心原则,同时方便各自独立构建、部署。
开发环境下的CORS配置
在ASP.NET Core的Program.cs中添加针对性的CORS策略,允许前端开发服务器的请求:
var builder = WebApplication.CreateBuilder(args); // 配置CORS服务 builder.Services.AddCors(options => { options.AddPolicy("DevelopmentCors", policy => { policy.WithOrigins("http://localhost:5173") // Vite默认开发地址 .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); // 允许携带认证令牌、Cookie等凭证 }); }); // 其他服务注册(如AddControllers、AddDbContext等) builder.Services.AddControllers(); var app = builder.Build(); // 启用CORS,注意顺序要放在UseRouting之后、UseAuthorization之前 app.UseCors("DevelopmentCors"); app.UseAuthorization(); app.MapControllers(); app.Run();
注意:生产环境中需替换为具体的前端域名,禁止使用
AllowAnyOrigin,避免安全风险。
内容的提问来源于stack exchange,提问作者Hardik Dhuri
相关产品推荐
相关产品推荐

