2015-11-19 4 views
0

Я хочу реализовать очень простой логин, пытаясь применить хорошие концепции ООП, однако я не могу делиться варами между Компонентами.Angular2 Как защитить контент

Basic У меня есть основной компонент, у которого есть два дочерних компонента Login и ProtectedComponent, поток - это когда человек зарегистрирован. Я хочу скрыть компонент входа и показать защищенный компонент. Вы можете увидеть код ниже.

import {bootstrap, Component, View, NgIf} from 'angular2/angular2'; 
 

 
//Protected-Content Component 
 
@Component({ 
 
    selector: 'protected-content' 
 
}) 
 
@View({ 
 
    templateUrl: 'app/views/protected-component.html' 
 
}) 
 
class ProtectedComponent{ 
 
} 
 

 

 
//Login Component 
 
@Component({ 
 
    selector: 'login' 
 
}) 
 
@View({ 
 
    templateUrl: 'app/views/login.html' 
 
}) 
 
class Login{ 
 
    login(username, password){ 
 
    if(username.value =="test" && password.value=="test"){ 
 
     isLogged = true; 
 
    } 
 
    } 
 
} 
 

 
@Component({ 
 
    selector: 'main' 
 
}) 
 
@View({ 
 
    template:` 
 
    <login *ng-if="!isLogged"></login> 
 
    <protected-content *ng-if="isLogged"></protected-content>`, 
 
    directives:[Login,ProtectedComponent,NgIf] 
 
}) 
 
class Main{ 
 
    isLogged:boolean; 
 
    constructor(){ 
 
    this.isLogged = false; 
 
    } 
 
} 
 

 
bootstrap(Main);

Любая идея?

+0

Я думаю, что вы не можете защитить содержимое на переднем конце. Например, консоль в Chrome может читать конфигурацию из Firebase – Codenator81

ответ

0

Для этой цели я использовал EventEmiter, что позволяет связываться между компонентами. Здесь хорошо example.

0

Или расширьте класс RouteOutlet и используйте инструкцию com.comentent = Login, чтобы перенаправить пользователя в компонент «Вход», если вход не прошел (может быть проверен static isLogged: boolean в расширенном классе).

https://auth0.com/blog/2015/05/14/creating-your-first-real-world-angular-2-app-from-authentication-to-calling-an-api-and-everything-in-between/