不同的index.html和angular

时间:2018-06-25 05:57:03

标签: angular authentication

当用户加载应用程序时,服务器会检查是否允许他访问该应用程序。 如果没有,我想将其重定向到错误页面。

index.html I中的相关代码

 <app-root></app-root>

main.ts

   platformBrowserDynamic().bootstrapModule(AppModule)

AppModule在其中包含延迟加载模块的路由,当我尝试访问url时,尽管没有获得授权,它仍开始构建路由。

授权检查在这里进行:

app.module.ts

@NgModule({
...
providers:[
{
provide: APP_INITIALIZER,
**useFactory: startupServiceFactory,**
...
}
]

**startupServiceFactory**(){
return () => startupService.load();
}

我可以将用户重定向到错误页面吗?

2 个答案:

答案 0 :(得分:0)

您可以像这样简单地使用Angular的canActivate进行检查-

  {
    path: '',
    component: yourComponent,
    canActivate: [ AuthGuardService ]
  }

AuthGuardService是您的服务,您可以在其中检查用户是否被授权并进行相应的重定向。

答案 1 :(得分:0)

我很乐意在后端做这个...  如果已通过验证:我将此视图称为“” 如果不是:调用另一个视图

,您可以在同一页面上完成此解决方案

$(document).ready(function(){
  if ( true) {
  document.getElementById("main").innerHTML = 
  "<AppRoot>Loading ...</AppRoot>";
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div> aaaaaa</div>
<div id="main">  </div>

如果您想获得角度路线的许可,可以添加

     {
    path: 'abc',
    component: abcComponent,
    canActivate: [ AuthGuard ],
          data: {
              roles: ['admin'] ,
        },
 { path: '**', component: PageNotFoundComponent }
  }

并根据需要键入AuthGuard的代码:

 @Injectable()

  export class AuthGuard implements CanActivate {

    constructor( private router: Router) { }

   canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {

  //    let roles = route.data["roles"] as Array<string>;
      if (role Condition)
          return true;
      else
        {
  this.router.navigateByUrl("/notfound");
//return false;
}  

    }
  }