Blazor 路由:如何防止通过 URL 直接访问组件
Posted
技术标签:
【中文标题】Blazor 路由:如何防止通过 URL 直接访问组件【英文标题】:Blazor Routing: How to prevent direct access to components via URL 【发布时间】:2021-10-05 21:07:58 【问题描述】:我有一个基于标准模板的 blazor wasm 应用程序。在我的导航中,我有几个组件。由于应用程序的内容,我想阻止直接访问组件。
例如,通过使用以下链接来防止直接访问组件“myComponent”: https://www.example.com/myComponent
这是必要的,因为用户必须在应用程序中遵循严格的流程。
一旦我从组件中删除了 @page 指令,就无法通过 . 并且导航不再起作用。
进一步:如何首先从 url 中隐藏组件名称?
期待一些提示!
【问题讨论】:
【参考方案1】:通过使用如下链接防止直接访问组件“myComponent”:https://www.example.com/myComponent
您可以通过不添加@page "myComponent"
来做到这一点
你想要的已经是默认行为了。
首先如何从 url 中隐藏组件名称?
当它是一个页面时,您将需要一些东西。但是你可以选择任何你想要的名字。
也许您可以通过页面和组件之间的区别来更新您的问题。并告诉我们您为什么不希望 URL 中包含哪些信息。
页面是具有一个或多个路由属性的组件 (@page "<url-patern>"
)
这是必要的,因为用户必须在应用程序中遵循严格的流程。
您可以构建“向导”:维护“步骤”并根据该值显示特定组件的主页。使用 EventCallback 前进或后退。
【讨论】:
但是如果没有@page 属性,如何通过导航访问页面呢? 不是。您可以通过多种方式在页面上显示组件。但是导航意味着使用 URL。【参考方案2】:您可以使用 NavigationManager 将用户重定向到其他页面
示例:
@inject NavigationManager NavigationManager
@code
....
protected async override void OnInitialized()
if(!isLogin)
NavigationManager.NavigateTo($"/login");
你也可以在渲染组件之前检查需求
例子
@if (isLogin)
<myComponent/>
【讨论】:
以上是关于Blazor 路由:如何防止通过 URL 直接访问组件的主要内容,如果未能解决你的问题,请参考以下文章