fix(platform): 代码审查整改——反代按域拆分授权、根除探测副作用与死代码清理
- YARP: map-edit/ai-config 全方法、reflection 写方法挂 PlatformScope, reflection/selection 单独放行(运营端 3D 高亮),堵住运营账号直达地图编辑/反射调用 - goto-site 探测改用不存在的 car/-1(消除健康检查真实派车风险)并加 60s 缓存 - Config PUT 按 scope 收紧:RCSMonitor 仅可写 ops 节;wizard 写操作与 simplelite/restart-for-update 限 PlatformScope;/api/health 去除虚假端口表 - 修复 wms 模块菜单裁剪失效(admin-config-location → admin-config-facility) - vrHost 默认 location.hostname:8223(新增 utils/vrender.ts),远程访问 3D 视口可用 - /status 页改接真实 /api/health* 诊断;uploadAsset 移除矛盾 multipart 头; mapsApi.merge 对齐 save 的 409 冲突处理;JWT 验签参数改启动期 DI 一次性配置 - 清理死代码:ProjectionController、DataTablePro、useClipboard、CadToolbarView、 AppShell 未用导入;lint 脚本替换为 typecheck;日志窗口 List 改 Queue
This commit is contained in:
+7
-14
@@ -156,15 +156,6 @@ builder.Services.AddSingleton<InternalTokenStore>();
|
||||
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
||||
.AddJwtBearer(opt =>
|
||||
{
|
||||
// TokenValidationParameters 在第一次解析请求时从 JwtIssuer 拿,避免 ctor 顺序耦合。
|
||||
opt.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
|
||||
{
|
||||
// 完整参数在 OnMessageReceived 里替换为 JwtIssuer.BuildValidationParameters()
|
||||
ValidateIssuer = false,
|
||||
ValidateAudience = false,
|
||||
ValidateIssuerSigningKey = false,
|
||||
ValidateLifetime = false,
|
||||
};
|
||||
opt.Events = new JwtBearerEvents
|
||||
{
|
||||
OnMessageReceived = ctx =>
|
||||
@@ -175,13 +166,14 @@ builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
||||
var cookie = ctx.Request.Cookies["simple.auth.token"];
|
||||
if (!string.IsNullOrEmpty(cookie)) ctx.Token = cookie;
|
||||
}
|
||||
// 用真实 JwtIssuer 参数替换占位 ValidationParameters。
|
||||
var issuer = ctx.HttpContext.RequestServices.GetRequiredService<JwtIssuer>();
|
||||
ctx.Options.TokenValidationParameters = issuer.BuildValidationParameters();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
};
|
||||
});
|
||||
// TokenValidationParameters 由 JwtIssuer(DI 单例)启动期一次性提供,
|
||||
// 替代旧的「每请求在 OnMessageReceived 里改写共享 Options」写法(并发坏味道)。
|
||||
builder.Services.AddOptions<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme)
|
||||
.Configure<JwtIssuer>((opt, issuer) => opt.TokenValidationParameters = issuer.BuildValidationParameters());
|
||||
|
||||
builder.Services.AddAuthorization(opts =>
|
||||
{
|
||||
@@ -206,8 +198,9 @@ builder.Services.AddReverseProxy()
|
||||
.LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"))
|
||||
.AddTransforms(tctx =>
|
||||
{
|
||||
// 只对 sl-route 注入 internal token;vrender-route(webVRender iframe 静态资源)不需要。
|
||||
if (tctx.Route.RouteId != "sl-route") return;
|
||||
// 对全部 sl-* 路由(兜底 + map-edit/ai-config/reflection 管理面拆分路由)注入
|
||||
// internal token;vrender-route(webVRender iframe 静态资源)不需要。
|
||||
if (!tctx.Route.RouteId.StartsWith("sl-", StringComparison.Ordinal)) return;
|
||||
tctx.AddRequestTransform(rt =>
|
||||
{
|
||||
var store = rt.HttpContext.RequestServices.GetRequiredService<InternalTokenStore>();
|
||||
|
||||
Reference in New Issue
Block a user