2016-10-17 2 views
1

Я использую библиотеку 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()) после того, как пользователь авторизовался enticated.

ответ

4

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

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

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

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

+0

Было бы очень полезно иметь полный рабочий пример. В процессе авторизации есть много аспектов, и мне сложно справиться с этим, даже используя некоторые большие библиотеки, такие как один из SpoonX (https://github.com/SpoonX/aurelia-authentication) – jap1968