gem*_*pir 7 javascript typescript angular
我正在采取Angular 2和角度的第一步,我想知道如何设置登陆页面.
我的目标是每次用户在本地存储或cookie中没有令牌时显示登录页面.
我的app.component.ts看起来像这样
import {Component} from 'angular2/core';
import {ROUTER_DIRECTIVES, RouteConfig} from 'angular2/router';
import {NavbarComponent} from './navbar.component';
import {LoaderComponent} from './loader.component';
import {NameListService} from '../shared/index';
import {HomeComponent} from '../+home/index';
import {AboutComponent} from '../+about/index';
@Component({
selector: 'g-app',
viewProviders: [NameListService],
templateUrl: 'app/components/app.component.html',
directives: [ROUTER_DIRECTIVES, NavbarComponent, LoaderComponent]
})
@RouteConfig([
{
path: '/',
name: 'Home',
component: HomeComponent
},
{
path: '/about',
name: 'About',
component: AboutComponent
}
])
export class AppComponent {
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,/ home和/ about也是组件.现在我想要一个无法访问导航栏的单独页面.如果用户未登录,则用户将始终登陆.
如果有人可以帮助我开始或至少指向一个好的方向,那将是非常棒的,也许可以指向一个好的角度2教程.
这是我的应用程序基于https://github.com/mgechev/angular2-seed的样板
如果令牌存在,您可以覆盖路由器出口并检查激活情况。像这样的东西:
import {Directive, Attribute, ElementRef, DynamicComponentLoader} from 'angular2/core';
import {Router, RouterOutlet, ComponentInstruction} from 'angular2/router';
@Directive({
selector: 'router-outlet'
})
export class LoggedInRouterOutlet extends RouterOutlet {
publicRoutes: any;
private parentRouter: Router;
constructor(_elementRef: ElementRef, _loader: DynamicComponentLoader,
_parentRouter: Router, @Attribute('name') nameAttr: string) {
super(_elementRef, _loader, _parentRouter, nameAttr);
this.parentRouter = _parentRouter;
}
activate(instruction: ComponentInstruction) {
if (!hasToken()) {
this.parentRouter.navigateByUrl('/login');
}
return super.activate(instruction);
}
}
Run Code Online (Sandbox Code Playgroud)
改编自这里: https: //github.com/auth0-blog/angular2-authentication-sample/blob/master/src/app/LoggedInOutlet.ts
这可以扩展为能够使用角色和其他访问控制。
归档时间: |
|
查看次数: |
3757 次 |
最近记录: |