Angular 6:发送经过身份验证的请求

时间:2018-10-25 08:52:30

标签: angular jwt angular6

我正在尝试在angular 6中实现angular2-jwt发送实现请求,但出现错误,似乎该软件包不适用于angular 6

我的代码:

ERROR in node_modules/angular2-jwt/angular2-jwt.d.ts(3,10): error TS2305: Module '"D:/.../.../.../node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/rxjs/Observable.d.ts(1,15): error TS2307: Cannot find module 'rxjs-compat/Observable'.

错误:

[3, 1000, 3]

1 个答案:

答案 0 :(得分:1)

您使用的angular-jwt版本不支持Angular 6和RxJS6。

您应该删除此版本并安装较新的版本:

npm install @auth0/angular-jwt

并按以下方式使用它:

import { JwtModule } from '@auth0/angular-jwt';
import { HttpClientModule } from '@angular/common/http';

export function tokenGetter() {
  return localStorage.getItem('jwt');
}

@NgModule({
  imports: [
    // this is the specific part
    HttpClientModule,
    JwtModule.forRoot({
      config: { tokenGetter }
    }),
  ]
})
export class AuthModule {}

这将使HttpClient内使用AuthModule发出的每个HTTP请求都具有自动发送的凭据。

您可以通过在组件/服务中注入JwtHelperService来使用库提供的实用程序功能(检查令牌的有效性等):

import { JwtHelperService } from '@auth0/angular-jwt';

@Injectable
export class MyService {
  constructor(private jwtUtil: JwtHelperService) {}
}

您可以阅读文档here