ada*_*039 2 angular angular4-router
我想知道是否有与角组件功能(特别是单击事件)等效的路由防护。
我们已经设置了一个路由保护程序,可以在未登录时打开登录页面。这很好用。问题是,我们有一个不需要身份验证即可查看的组件,但是该组件中的某些功能确实需要身份验证。例如,新闻列表,但上/下按钮需要进行身份验证才能使用。
上/下按钮只是触发组件功能的单击事件。我们可以采用在自定义路由保护程序中使用的逻辑,并将其添加到这些函数中,但这会导致大量重复代码。
我想知道Angular是否内置可以解决这个问题的东西。我在考虑类似于ASP.NET MVC的[Authorize]属性,您可以将其放在要进行身份验证的操作的顶部。据我所知,路由守卫仅适用于路由,而不适用于单击事件。
对于对解决方案感兴趣的任何人,我都能弄清楚如何在函数中使用现有的路由防护。这消除了对if / else语句的需要,其中else语句包括了未经身份验证的路由守卫正在执行的逻辑。似乎是我能找到的最干净的解决方案。
constructor(private authGuard: AuthGuard, private route: ActivatedRoute){}
upvoteClick(article: NewsArticle): void {
if (this.authGuard.canActivate(this.route.snapshot)) {
//logic requiring authentication
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1131 次 |
最近记录: |