-1

サーバーがいくつかのパラメーターを送信した場合にのみ、コンポーネントにアクセスできるようにするルートガードをアプリで使用しようとしていました。

これは、サーバーが私に送信できるパラメーターのリストです (すべてのパラメーターが毎回送信されるわけではありません)。

  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,
    );
}
4

1 に答える 1