Aurelia аутентификация: как получить идентификатор пользователя

Я использую библиотеку aurelia-auth в новом проекте. Пока все кажется правильным, но я не могу отобразить информацию о пользователе на панели навигации.

Библиотека предоставляет некоторые функции, которые предоставляют такую ​​информацию, например, getTokenPayload(), Я пытаюсь получить доступ к этой информации, чтобы показать идентификатор пользователя или имя пользователя на панели навигации.

Я видел, что другие свойства (такие как 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();
  };

Я не могу понять, как я могу отобразить на панели навигации идентификатор пользователя (полученный через getTokenPayload() функция), как только пользователь был аутентифицирован.

1 ответ

Решение

Ты можешь позвонить getTokenPayload в attached обратный вызов для NavBar (вы, вероятно, хотели бы позвонить isAuthenticated сначала проверить, если пользователь аутентифицирован). Установите свойство на вашем NavBar ВМ для полезной нагрузки токена, а затем используйте привязку данных для привязки к свойству идентификатора пользователя.

Затем установите EventAggregator подписка в NavBar прикреплен обратный звонок, чтобы подписаться на правильный auth событие (возможно 'auth:authenticate') и позвоните getTokenPayload в обратном вызове для этой подписки, а затем установите свойство VM. Это обеспечит обновление свойства при изменении информации об аутентификации.

Вы хотите подписаться на 'auth:logout' событие и сбросьте свойство VM, которое вы установили выше. Установите эту подписку в attached обратный звонок также.

Наконец, убедитесь, что эти подписки detached обратный вызов NavBar VM.

Другие вопросы по тегам