Angular7 эквивалент C # атрибута декоратора - PullRequest
2 голосов
/ 20 июня 2019

У меня есть метод api с атрибутом Authorize, который проверяет разрешениянет

##????##
getIndexes(): Observable<Index[]> {
  // dont want to check in the method like below
  if(checkPerms("ReadIndexes")===true){
    ...
  }
}

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Да, вы можете использовать HttpInterceptor в Angular, где вы можете проверить авторизацию, например

import {Injectable} from '@angular/core';
import {HttpInterceptor, HttpRequest, HttpHandler, HttpEvent} from '@angular/common/http';
import {Observable, from} from 'rxjs';
import {switchMap} from 'rxjs/operators';

import {AuthService} from './auth.service';


@Injectable()
export class BearerInterceptor implements HttpInterceptor {

  constructor(protected authService: AuthService) {}

  public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return from(this.authService.isLoggedIn())
      .pipe(
        switchMap(isLoggedIn => {
          if (isLoggedIn) {
            return this.authService.addTokenToHeader(req.headers)
              .pipe(
                switchMap(headersWithBearer => {
                  const requestWithBearer = req.clone({headers: headersWithBearer});
                  return next.handle(requestWithBearer);
                })
              );
          }

          return next.handle(req);
        })
      );
  }
}
0 голосов
/ 20 июня 2019

Существует декоратор, но вы должны написать логику для декоратора

Пример использования декоратора является компонентом

@Component({
    selector: "thingy",
    template: `foo`
})
class MyComponent {
}

Этот является сообщением в блоге, как вы можете написатьиндивидуальный декоратор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...