如何设置.NET Core和Identity的基本路径



在运行.NET6的Blazor服务器应用程序中,我正在使用该应用程序。使用BasePath("/app"(将子目录添加到应用程序的基本URL。所以它从.com变成了.com/app。这一开始似乎很好。应用程序启动,url位于/app。但是,它无法处理"区域"文件夹中包含的页面。我正在使用Microsoft Identity进行身份验证和授权。我已经搭建了几个Identity页面,包括Login.cshtml、Register.cs.html等。这些搭建的页面不是Blazor组件,因此Visual Studio将它们全部放在名为Identity的Area文件夹中。请参阅所附的屏幕截图。

解决方案文件夹结构

例如,主页Blazor组件位于/Pages/Index.razor中http://localhost:5000/.使用应用程序更改基本路径后。UseBasePath("/app"(在http://localhost:5000/app相反这就是我想要的,它适用于所有Blazor组件。但是,它不适用于/Areas文件夹中的任何页面。注册页面位于/Areas/Identity/Account/Register.cs.html中。按照惯例,此页面通常可访问http://localhost:5000/Identity/Account/Register.在更改基本路径后,我希望它在http://localhost:5000/app/Identity/Account/Register但是指向/Identity/Account/Register的链接仍然指向不包含/app的旧url。

这是我的Startup.cs

var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
var identityConnectionString = builder.Configuration.GetConnectionString("IdentityConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>    
options.UseMySql(identityConnectionString, ServerVersion.AutoDetect(identityConnectionString)));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<ApplicationUser>>();
builder.Services.AddScoped<IIdentityService, IdentityService>();
builder.Services.AddSingleton<WeatherForecastService>();
var app = builder.Build();
app.UsePathBase("/app");
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseMigrationsEndPoint();
}
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(); // NGINX will handle HTTPS redirection
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();

解决方案中是否有其他文件需要配置区域的基本路径?

当您调用builder.Services.AddDefaultIdentity<ApplicationUser>时,这会将默认UI添加到应用程序中。

这是指向AddDefaultIdentity源的链接。您可以看到对AddDefaultUI()的调用:https://source.dot.net/#Microsoft.AspNetCore.Identity.UI/IdentityServiceCollectionUIExtensions.cs,53

以下是指向IdentityDefaultUIConfigureOptions的链接:https://source.dot.net/#Microsoft.AspNetCore.Identity.UI/IdentityDefaultUIConfigureOptions.cs,32

您可以看到LoginPathURL设置在那里。为了回答你的问题,也许你可以试着把线app.UseBaePath("/app")移到AddDefaultIdentity之前。

相关内容

  • 没有找到相关文章

最新更新