Aurelia 身份验证:如何获取用户 ID

Aurelia authentication: How to obtain the user id

我正在新项目中使用 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() 函数获得)。

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

然后,在 NavBar 附加回调中设置一个 EventAggregator 订阅以订阅正确的 auth 事件(可能 'auth:authenticate')并调用 getTokenPayload 在该订阅的回调中,然后设置 VM 属性。如果授权信息发生变化,这将确保 属性 得到更新。

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

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