当用户加载应用程序时,服务器会检查是否允许他访问该应用程序。 如果没有,我想将其重定向到错误页面。
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();
}
我可以将用户重定向到错误页面吗?
答案 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;
}
}
}