Angular Router-限制直接访问路由。仅可通过应用内路由访问

时间:2019-09-05 19:38:20

标签: angular

我具有延迟加载的基本父/子路由配置。

/ (root)
  -> myprofile
     -> edit

但是,为edit路由加载的组件依赖于state从内部角度路由器传递,因为它将从中来回传递信息。

如果用户将以/myprofile/edit刷新,这将导致某些不良行为,因为不存在路由器状态。

现在,我检查状态,并在初始化后使用router.navigate()返回/myprofile中的edit.component页面,但是我不认为这是最有角度的方法去解决这个问题。

是否有一种方法可以围绕只能通过Angular Router访问的路由建立防护?

1 个答案:

答案 0 :(得分:0)

当用户刷新Angular路由时,Web服务器会响应并提供index.html服务,然后Angular接管,读取URL并使用History JavaScript API推送相应的状态。

您可以通过在防护装置中测试state是否存在来实现自己的逻辑。在Angular中,没有内置功能可以知道导航是否是第一个导航,因此,如果您不想实施防护,最好的解决方案是配置Web服务器(Apache,Nginx或您所需要的任何东西)使用)在收到Location: /myprofile请求时发送302 /myprofile/edit