2016-05-06 17 views
1

私はAureliaを初めて使いました。私の質問は、マルチユーザー環境でAureliaを使用するためのガイダンスです。役割による承認を伴うWindows認証誰もサンプルコードを持っていますか、多分asp mvcをホストとしていますか?Aurelia js authorization

+0

認証メカニズムの構築方法を教えてください。 –

+0

箱から取り出したものがあればそれを見るか、見てください。あるいは誰かが既にそれを作り、それを共有したいと思っているかもしれません。基本的には、主題に関する情報は高く評価されます。 – Petrovich

答えて

4

ここでは、単純な承認ワークフローの例です:

アプリケーション構造:

/src 
main.js 
-app 
    -app.html -- app root component for logged users 
    -app.js -- app root component for logged users 
    -nav-bar.html 
    -nav-bar.js 
-login 
    -login.js -- app root component for unlogged users 
    -login.html -- app root component for unlogged users 
    -user-password.html -- route with user/password fields. 
    -user-password.js -- route with user/password fields. 
    -forgot-password.html 
    -forgot-password.js 

MAIN.JS:

export function(aurelia) { 
    aurelia.use 
    .standardConfiguration() 
    .developmentLogging(); 

    //initialise 
    aurelia.start().then(a => { 
    let rootComponent = isLoggedIn() ? 'app/app' : 'login/login'; 
    a.setRoot(rootComponent, document.body); 
    }); 
}); 

function isLoggedIn() { 
    //do your magic here 
    //check if the current user has a valid authorisation token 
} 

がAPP.HTML:

<template> 
    <!-- THIS IS WHERE YOU APP WILL BE RENDERED (if the user is logged) --> 
    <nav-bar></nav-bar> 
    <router-view></router-view> 
</template> 

login.htmlと:

<template> 
    <!-- THIS IS WHERE YOU APP WILL BE RENDERED (if the user is not logged) --> 
    <router-view></router-view> 
</template> 

LOGIN.JS:

export class Login { 

configureRouter(config, router) { 
    config.map([ 
    { route: '', name: 'user-password', moduleId: './user-password', title: 'Sign In' }, 
    { route: 'forgot-password', name: 'forgot-password', moduleId: './forgot-password', title: 'Forgot Password?' } 
    ]); 
    config.mapUnknownRoutes(instruction => { 
    //check instruction.fragment 
    return './user-password'; 
    }); 

    this.router = router; 
} 

} 

USER-PASSWORD.HTML

<template> 
    <input type="text"> 
    <input type="password"> 
    <button type="submit"></button> 
</template> 

USER -PASSWORD.JS

export class UserPassword { 

    login() { 
    //check if the user and password are valid 
    //redirect to the app root component 
    //import and inject { Aurelia } from 'aurelia-framework'; 
    this.aurelia.setRoot('app/app'); 
    } 
} 

何かが十分に明確でない場合は、ちょうど私に尋ねます!

希望すると便利です。

+0

これはかなり良いですが、ユーザーロールに基づいて異なるUI要素(ルータービューなど)をどのように処理できますか?管理者は、通常の認証されたユーザーとは異なるメニューオプションが必要です。 – Petrovich

+0

多くの可能性があります。メニューオプションをレンダリングするWebコンポーネントを作成することができます。そのコンポーネントは、現在のユーザーに表示するオプションを特定する必要があります。 \t おそらく、管理者のために全く異なるルートコンポーネントを作成することができます。 –

+1

また、認証パイプラインを使用するようにルータを設定する必要があります。このスレッドを見てくださいhttp://stackoverflow.com/questions/31425138/aurelia-during-a-routers-pipeline-step-how-do-i-bind-a-variable-to-that-route –