【发布时间】:2018-04-15 12:12:33
【问题描述】:
我想知道是否存在与角度组件功能(特别是单击事件)的路由保护等效的方法。
我们设置了一个路由守卫,在未登录时会打开一个登录页面。这很好用。问题是,我们有一个不需要身份验证即可查看的组件,但组件中的某些功能确实需要身份验证。例如,新闻文章列表,但upvote/downvote 按钮需要身份验证才能使用。
upvote/downvote 按钮只是触发组件功能的点击事件。我们可以将我们在自定义路由保护中使用的逻辑添加到这些函数中,但这会导致大量重复代码。
我想知道 Angular 是否有内置的东西可以解决这个问题。我正在考虑类似于 ASP.NET MVC 的 [Authorize] 属性的东西,您可以将其放在操作的顶部进行身份验证。据我所知,路由守卫仅适用于路由,而不适用于点击事件。
【问题讨论】:
-
没有什么比功能守卫更好的了,但我相信你有某种 auth.service,你可以在点击时检查 authService.isAuthorized()。此处保护的另一种方法是完全使用 *ngIf 将这些按钮从 DOM 中隐藏起来,再次引用组件中的某个布尔值,您可以在 ngOnInit 中设置这些布尔值。如果您需要动态跟踪 isAuthorized 您可以将事件发射器或主题放在您的 authService 中,这将传播更改并订阅它。