如何仅授予对定义的路由的访问权限?

How to grant access to only the routes defined?

我在 Startup.cs 中定义了以下代码:

services.AddMvc().AddRazorPagesOptions(options =>
{
    options.Conventions.AddPageRoute("/ListVehicles", "/vehicle-list");
});

如何只允许使用 url "vehicle-list" 访问页面,而不是仅在 url 中键入 cshtml 文件名 ListVehicles?我试过 options.Conventions.Clear() 但没用。

您可以使用自定义 IPageRouteModelConvention 来实现此目的,该自定义 IPageRouteModelConvention 清除所需 PageRouteModel 中的 Selectors 列表:

services.AddMvc().AddRazorPagesOptions(options =>
{
    options.Conventions.AddPageRouteModelConvention("/ListVehicles", model =>
    {
        model.Selectors.Clear();
    });
    options.Conventions.AddPageRoute("/ListVehicles", "vehicle-list");
});

现在请求 http://localhost/ListVehicles will result to 404 error, while request to http://localhost/vehicle-list 将 return ListVehicles.cshtml 页。