2016-10-17 14 views
1

新しいプロジェクトでaurelia-authライブラリを使用しています。 これまでのところすべて正しいと思われますが、ナビゲーションバーにユーザー情報を表示できません。Aurelia認証:ユーザーIDを取得する方法

ライブラリには、getTokenPayload()のような情報を提供すると思われる機能がいくつか用意されています。ナビゲーションバーにユーザーIDまたはユーザー名を表示するために、この情報にアクセスしようとしています。私は

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(); 
    }; 

が、私はどのように把握することができませんでした:

私は、他のプロパティは、(例えばisAuthenticated()をなど)、このようにアクセスされていることを見てきましたユーザが認証されると、ナビゲーションバーにユーザID(getTokenPayload()機能によって取得)を表示します誘惑された。

答えて

4

あなたは(おそらくユーザーが認証されている場合、最初のチェックにisAuthenticatedを呼び出すしたいと思う)NavBarためattachedコールバックでgetTokenPayloadを呼び出すことができます。 NavBar VMのプロパティをトークンペイロードに設定し、データバインディングを使用してユーザーIDプロパティにバインドします。

はその後、適切なauthイベント(おそらく'auth:authenticate')に加入し、そのサブスクリプションのためのコールバックでgetTokenPayloadを呼び出すためにNavBar添付のコールバックでEventAggregatorサブスクリプションを設定して、VMのプロパティを設定します。これにより、認証情報が変更された場合にプロパティが更新されるようになります。

'auth:logout'イベントを購読して、上記で設定したVMプロパティを設定解除する必要があります。このサブスクリプションをattachedコールバックにも設定してください。

最後に、NavBar VMのコールバックdetachedにこれらのサブスクリプションを廃棄してください。

+0

完全な実施例を有することは非常に有用である。認証ワークフローには多くの側面があり、それに対処するのは複雑で、SpoonX(https://github.com/SpoonX/aurelia-authentication)などの素晴らしいライブラリを使用しても、 – jap1968

関連する問題