サーバーがいくつかのパラメーターを送信した場合にのみ、コンポーネントにアクセスできるようにするルートガードをアプリで使用しようとしていました。
これは、サーバーが私に送信できるパラメーターのリストです (すべてのパラメーターが毎回送信されるわけではありません)。
AGREEMENTS_VIEW
PROSPECTS_VIEW
AGREEMENTS_INSERT_UPDATE
PRODUCTS_INSERT_UPDATE
PROSPECTS_INSERT_UPDATE
DOCUMENTS_VIEW
DOCUMENTS_INSERT_UPDATE
私のルートガード:
@Injectable()
export class UserRouteAccessService implements CanActivate {
userActions=[];
constructor(private router: Router, private securityService:CralSecurityService) {
}
securityActions(){debugger;
this.securityService.securityActions().subscribe(
(res: Array<actions>) => {
this.userActions = res;
console.log(res);
});
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
this.securityActions();
if (this.userActions = actions ) {
return true;
} else {
return false;
}
}
パラメータの一部が送信されているかどうかにかかわらず、それが本当であるかどうかをどのように判断できますか? userActions=[] は正しいですか? たとえば、AGREEMENTS_VIEW PROSPECTS_VIEW が送信されると、「true」になるはずです。
また、これは大丈夫ですか?
export class actions{
AGREEMENTS_VIEW :string;
PROSPECTS_VIEW :string;
AGREEMENTS_INSERT_UPDATE :string;
PRODUCTS_INSERT_UPDATE :string;
PROSPECTS_INSERT_UPDATE :string;
DOCUMENTS_VIEW :string;
DOCUMENTS_INSERT_UPDATE :string;
}
HTTP 投稿:
securityActions(): <Array<any>> {
return this.http.post<Array<any>>(
`${this.ENDPOINT}/security-actions`,
null,
);
}