我有一个 .net 8 razor 页面应用程序,我使用以下代码添加了来自数据库的页面路由:
options.Conventions.AddPageRoute(route.FullName, route.Key.ToString());
例如,我为页面/帐户/登录添加了页面路由/A64592D0-05AD-4E0D-8A0C-5E5259800A19。现在我想避免有人可以直接使用/Account/Login 访问该页面。
背景:每个页面都可以通过导航树中的多个路径访问,这样就可以评估用户当前在树上的位置,并根据位置和用户处理不同的权限。
我只是可以将 @page 指令设置为一些未使用的值,但这并不能避免使用该值访问页面的可能性。
如何删除或禁用所有页面的默认页面路由?
您可以使用PageRouteModelConvention清除所有默认路由。一个例子如下:
然后在Program.cs中注册它,确保
AddPageRoute
随后进行调用:或者根据您的逻辑,您可以在自定义
PageRouteModelConvention
.Apply
应用程序中的每个页面在启动时都会调用该方法一次。