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

时间:2016-10-17 11:27:35

标签: aurelia aurelia-auth

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

1 个答案:

答案 0 :(得分:4)

您可以在 array_search(strtolower($search), array_map('strtolower', $array)); 的{​​{1}}回调中致电getTokenPayload(您可能需要致电attached以首先检查用户是否经过身份验证)。将NavBar VM上的属性设置为令牌有效内容,然后使用数据绑定绑定到用户ID属性。

然后,在isAuthenticated附加回调中设置NavBar订阅,以订阅正确的EventAggregator事件(可能为NavBar),然后致电auth该订阅的回调然后设置VM属性。如果身份验证信息发生更改,这将确保属性更新。

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

最后,请确保在'auth:logout' VM的attached回调中处理这些订阅。