- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经构建了一个拦截器,用于向 PHP 后端发出 HTTP 请求。
这个后端为应用程序提供了一个 JWT token ,我将它保存在 Ionic Storage 中。
但我想从 Storage 中获取该 token 并将其作为 header 添加到 HTTP 请求中。
下面是我的带有硬编码 token 的拦截器。
这有效,我得到了后端的响应。
看到更新@这篇文章的底部
http-interceptor.ts
import { HttpInterceptor, HttpRequest } from '@angular/common/http/';
import {HttpEvent, HttpHandler} from '@angular/common/http';
import { AuthProvider } from "../providers/auth/auth";
import {Injectable} from "@angular/core";
import {Observable} from "rxjs/Observable";
import {Storage} from "@ionic/storage";
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const changedReq = req.clone({headers: req.headers.set('Authorization', 'Bearer MY TOKEN')});
return next.handle(changedReq);
}
}
intercept(req: HttpRequest<any>, next: HttpHandler) : Observable<HttpEvent<any>>{
return fromPromise(this.Auth.getToken())
.switchMap(token => {
const changedReq = req.clone({headers: req.headers.set('Authorization', 'Bearer ' + token )});
return next.handle(changedReq);
});
}
最佳答案
对于像我一样遇到这种情况并正在使用 的任何人rxjs >=5.5.0 那么你可以这样做:
auth-interceptor.ts
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private authService: AuthService) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return from(this.authService.getToken()).pipe(mergeMap((token) => {
const changedReq = req.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
return next.handle(changedReq);
}));
}
public async getToken() {
return await this.storage.get('ACCESS_TOKEN');
}
关于ionic-framework - Ionic 3 + HttpClientModule 和存储中的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48097936/
docs在 HttpClientModule 上说: Before you can use the HttpClientModule, you need to import the Angular H
此代码如何更改为新的 HttpClientModule,其中不需要 response.json() 的映射。 //uses Http getLegalTerms(): Observab
我在 Angular 中有应用程序,我只有一个 HttpClientModule,但是当我在构造函数中提供 HttpClient 时,如下所示: export class UserService {
我只是第一次尝试使用 Angular 中的服务,我收到以下错误: ERROR TypeError: this.httpClientModule.get is not a function 我的服务文件
我刚刚将 angular 更新到版本 5.1.2。现在我从标题中提到的模块的导入中得到这个错误: Module '"c:/pdws-view-v2/node_modules/@angular/plat
The SVGViewer component在 Angular Material 文档应用程序中声明其模块如下: @NgModule({ exports: [SvgViewer], decl
Angular 正在从 HttpModule 转换为 HttpClientModule 并弃用前者,详见 Difference between HTTP and HTTPClient in angul
我正在我的 Angular 项目中实现 CSRF 保护。我已经升级到 4.3,并且根据 HttpClientModule 文档: https://angular.io/guide/http#secur
我是 Angular js 的新手,试图从 youtube 学习它,但我在我的代码中遇到了提到的问题 ,我不明白我的代码中缺少什么 错误 当我尝试访问 HttpClientModule 的获取服务时出
使用哪个构建模拟网络服务来测试 Angular 4 应用程序? 最佳答案 如果您使用的是 Angular 4.3.x 及更高版本,请使用 HttpClientModule 中的 HttpClient
我试图在假 json 服务器上构建一个简单的应用程序 但我无法导入 HttpClient模块 这是来自 的错误消息VS 代码 : ERROR in node_modules/@angular/comm
我遇到了一个关于新 HttpClientModule 和来自 RX.js 的 map() 函数的问题。 我想做的是更改来自 get() 方法的可观察对象中返回数组的对象。 我当前的代码: get(ur
在这篇文章中here和其他人:看起来您需要在 app.module.ts 中导入 HttpClientModule 并在 app.component.ts 中导入 HttpClient 才能发出 ht
我已经构建了一个拦截器,用于向 PHP 后端发出 HTTP 请求。 这个后端为应用程序提供了一个 JWT token ,我将它保存在 Ionic Storage 中。 但我想从 Storage 中获取
嗯,我正在按照以下基础架构构建我的项目: 功能模块。 核心模块。 共享模块。 但是有一点我还不太清楚。 据我所知,HttpClientModule 应该位于 CoreModule 中,因为...它提供
请查看两个答案。 (感谢 JLRishe 和 AngularInDepth.com) AngularInDepth 还在他的帖子中添加了有趣的拦截器和 HttpClient 机制链接: https:/
我是一个基于 Angular 的 UI 项目的新手,并使用 vscode 生成了两个新组件以供项目使用。但是,每当我将更改推送到 git(bitbucket) 时,我总是会收到错误,而当我在我的机器上
我正在探索新的 Angular HttpClientModule 并遇到莫名其妙的错误。该模块足够新,我还找不到任何关于如何进行单元测试的有用信息,而且官方文档也没有任何示例。 该应用程序包含一个具有
我是 Angular2 的新手,我正在学习进行 http 调用。 我发现 Angular2 有这两个模块: HttpModule from @angular/http 和 HttpClientModu
我通过运行 ng new first-project 安装了一个准系统 angular 6 项目,我得到了一个默认的应用程序模块和组件。现在,我通过运行 ng generate module view
我是一名优秀的程序员,十分优秀!