Angular 5 / 6. 我在哪里放置我的登录页面?

Posted

技术标签:

【中文标题】Angular 5 / 6. 我在哪里放置我的登录页面?【英文标题】:Angular 5 / 6. Where do i place my login page? 【发布时间】:2019-01-09 22:48:14 【问题描述】:

我想做一个有角度的网站。我想在我的应用中有这样的第一页:

https://getbootstrap.com/docs/4.1/examples/sign-in/

当您在那里登录时,您将能够看到您的仪表板,类似于下一个,您无法在没有登录的情况下查看仪表板页面,因此登录是网站的第一页:

https://getbootstrap.com/docs/4.1/examples/jumbotron/

我不知道在哪里放置登录页面,想到的选项(不知道它们是否好):

    为登录页面创建一个专用组件,并使用 app-component 上的 rouet-outlet 路由到它。我不喜欢这个选项,因为它让我在其他组件中包含页眉和页脚。

    创建了一个专用组件,将其包含在 app-component 和 *ngIf 上(如果用户未登录)。我不喜欢这个选项,但我不知道为什么,安全?

    我知道有一个(或多个)更好的选择,希望您能帮助我学习。

index.html 怎么样,无论如何我都应该编辑它吗?

谢谢

【问题讨论】:

这在很大程度上取决于您的项目和您的个人喜好。 如果你想要我的意见,你应该做一个登录组件和一个记录组件。记录的组件将只包含一个<router-outlet>,它的路由将包含canActivatecanActivateChildchildren,这样所有其他路由都受到保护,只有在用户登录时才会显示。 我建议你阅读这个:medium.com/@ryanchenkie_40935/… 参考这个SO question。最好的方法是创建一个单独的登录和布局组件,然后在布局组件的路由定义中添加 canAcitvate 保护。 @trichetriche 我是否将两个组件都放在 app.component 上或登录时重定向到已登录? 【参考方案1】:

你可以做的基本上是两个组件,一个用于登录,一个用于仪表板。

一旦您在登录中进行身份验证,例如通过 JWT,您可以将令牌存储到 localstorage,然后在需要用户进行身份验证的组件上添加 Route Guards。

请看:https://angular.io/guide/router#milestone-5-route-guards

【讨论】:

以上是关于Angular 5 / 6. 我在哪里放置我的登录页面?的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里放置与我的项目相关的 conda-recipe?

将 Angular 2/3/4/5/6 项目转换为 Angular Universal

React在哪里放置一个带有侧边菜单的单页应用程序的登录页面

Jhipster - Angular 接收其他用户的导航

Angular 5 - 无法从一个组件导航到另一个组件

Firebase 电话登录,在哪里放置 Firebase 验证码?