如何在 startup.cs 中添加 /.well-known/openid-configuration 路由以及控制器路由和 angular 路由?
How to add /.well-known/openid-configuration route in startup.cs along with controller routes and angular routes?
我正在使用 Identityserver4 创建登录服务器。我正在使用 ASP.net 核心 3.1 来实现功能,并使用 angular 9 项目来为 login/registeration 屏幕提供静态文件。 angular 项目正在从 .netcore 项目的 wwwroot 文件夹中提供服务。
为了确保我的 angular 路由与控制器路由一起正常工作,我在 Startup.cs
中添加了以下内容
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseCors(Constants.Constants.Policy);
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseIdentityServer();
app.UseWhen(x => !x.Request.Path.Value.StartsWith("/Account"), builder =>
{
builder.Use(async (context, next) => {
await next();
if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
{
context.Request.Path = "/index.html";
await next();
}
})
.UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new List<string>{"index.html"}})
.UseStaticFiles();
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Account}/{action=Login}/{id?}");
});
}
这确保当 url 包含 http://localhost:port/Account/Login 时,它将通过控制器路由提供服务。每隔 URL 条路径将通过 angular.
提供服务
当客户端应用程序尝试访问 http://localhost:port/.well-known/openid-configuration url 以获取发现文档时,就会出现问题。因为 URL 不是以 "Account" 开头,它是通过 angular 提供的,即它被重定向到 index.html 页面。
如何将 .well-known/openid-configuration 路由添加到我的 Startup.cs 以便它 returns 发现文档?
从客户端应用程序访问 IdentityServer 时出现的错误是
我在 IdentityServer 网页上得到的错误是
我不得不添加一个例外到路由 /.well-known 和 /Account
app.UseWhen(x => !x.Request.Path.Value.StartsWith("/Account") && !x.Request.Path.Value.StartsWith("/.well-known/openid-configuration") , builder =>
{
builder.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
{
context.Request.Path = "/index.html";
await next();
}
})
.UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new List<string> { "index.html" } })
.UseStaticFiles();
});
我正在使用 Identityserver4 创建登录服务器。我正在使用 ASP.net 核心 3.1 来实现功能,并使用 angular 9 项目来为 login/registeration 屏幕提供静态文件。 angular 项目正在从 .netcore 项目的 wwwroot 文件夹中提供服务。
为了确保我的 angular 路由与控制器路由一起正常工作,我在 Startup.cs
中添加了以下内容 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseCors(Constants.Constants.Policy);
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseIdentityServer();
app.UseWhen(x => !x.Request.Path.Value.StartsWith("/Account"), builder =>
{
builder.Use(async (context, next) => {
await next();
if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
{
context.Request.Path = "/index.html";
await next();
}
})
.UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new List<string>{"index.html"}})
.UseStaticFiles();
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Account}/{action=Login}/{id?}");
});
}
这确保当 url 包含 http://localhost:port/Account/Login 时,它将通过控制器路由提供服务。每隔 URL 条路径将通过 angular.
提供服务当客户端应用程序尝试访问 http://localhost:port/.well-known/openid-configuration url 以获取发现文档时,就会出现问题。因为 URL 不是以 "Account" 开头,它是通过 angular 提供的,即它被重定向到 index.html 页面。
如何将 .well-known/openid-configuration 路由添加到我的 Startup.cs 以便它 returns 发现文档?
从客户端应用程序访问 IdentityServer 时出现的错误是
我在 IdentityServer 网页上得到的错误是
我不得不添加一个例外到路由 /.well-known 和 /Account
app.UseWhen(x => !x.Request.Path.Value.StartsWith("/Account") && !x.Request.Path.Value.StartsWith("/.well-known/openid-configuration") , builder =>
{
builder.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
{
context.Request.Path = "/index.html";
await next();
}
})
.UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new List<string> { "index.html" } })
.UseStaticFiles();
});