1

我在一个新项目中使用aurelia-auth库。到目前为止一切似乎都是正确的,但我无法在导航栏上显示用户信息。

该库提供了一些似乎提供此类信息的功能,例如getTokenPayload(). 我正在尝试访问此信息,以便在导航栏中显示用户 ID 或用户名。

isAuthenticated()我已经看到以这种方式访问​​其他属性(例如):

nav-bar.html:

<ul if.bind="isAuthenticated" class="nav navbar-nav navbar-right">
  <li><a href="/#/logout">Logout</a></li>
</ul>

nav-bar.js:

export class NavBar {
  ...
  get isAuthenticated() {
    return this.auth.isAuthenticated();
  };

一旦用户通过身份验证,我无法弄清楚如何在导航栏上显示用户 ID(通过getTokenPayload()函数获得)。

4

1 回答 1

4

您可以调用回调(您可能希望首先调用getTokenPayload以检查用户是否已通过身份验证)。将VM 上的属性设置为令牌有效负载,然后使用数据绑定绑定到用户 ID 属性。attachedNavBarisAuthenticatedNavBar

然后,EventAggregatorNavBar附加的回调中设置订阅以订阅正确的auth事件(可能'auth:authenticate')并调用getTokenPayload该订阅的回调,然后设置 VM 属性。如果身份验证信息发生更改,这将确保属性得到更新。

您将要订阅该'auth:logout'事件并取消设置您在上面设置的 VM 属性。attached也在回调中设置此订阅。

最后,确保在VM的detached回调中处理这些订阅。NavBar

于 2016-10-17T13:52:30.977 回答