编程语言
首页 > 编程语言> > javascript – 带有凭据的Angular 6 httpClient帖子

javascript – 带有凭据的Angular 6 httpClient帖子

作者:互联网

我有一些代码发布一些数据来创建数据记录.

它在服务中:

这是代码:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};

@Injectable({
  providedIn: 'root'
})
export class ApiService {

  constructor(private http: HttpClient) { }

  create() {
      const postedData = { userid: 1, title: 'title here', body: 'body text' };
      return this.http.post('https://jsonplaceholder.typicode.com/posts', postedData, httpOptions).subscribe(result => {
        console.log(result);
      }, error => console.log('There was an error: '));
  }

}

我的问题是……我该如何处理用户登录的网址所要求的内容…如何传递凭据?

解决方法:

那么,为了保护您的终端,您必须首先选择如何签署呼叫以及确保其安全的策略.一种常见的方法是使用JWT令牌. (还有其他选择,我给你提供我最熟悉的那个).

这将要求用户使用其凭据联系您的后端端点(不安全).您需要配置后端,它将检查凭据,如果它们是正确的,后端将返回一个令牌,您将用它来签署您的安全呼叫(使用JWT,您将此令牌放入标头中,如果您的后端配置正确,它将在安全的API上检查此令牌).

因为我们不知道你使用了什么后端,所以我只能为你的前端推荐一个JWT令牌库. https://github.com/auth0/angular-jwt

该库将为您提供一个http客户端,如果您在本地存储了一个令牌,它将使用令牌自动为您的请求签名.它还允许您将守卫放在您的前端URL上,这也会自动检查存储的令牌是否未过期.

工作流程如下:

1)用户将凭据发送到后端

2)后端确认凭证并发回令牌

3)将令牌存储在前端的本地存储中,并配置库以使用它.

4)在安全URL上设置防护,作为预先检查你是否有未过期的令牌.

5)最后使用库的HTTP客户端,它将使用您存储在本地存储中的令牌对您的请求进行签名,这将需要使用您的安全API.

编辑:

我有一个在Angular中使用JWT令牌的基本模板.你可以在这里找到它https://github.com/BusschaertTanguy/angular2_template/.

查看auth模块中的配置,登录&注册组件,用于安全http客户端的http客户端,auth&用于令牌处理的auth-guard服务&路线守卫.

模板中的一些快速代码段可以帮助您:

//Library Configuration
export function authHttpServiceFactory(
  http: Http,
  options: RequestOptions
) {
  return new AuthHttp(
    new AuthConfig({
      tokenName: 'token',
      tokenGetter: (() => localStorage.getItem('token')),
      globalHeaders: [{ 'Content-Type': 'application/json' }]
    }),
    http,
    options
  );
}

@NgModule({
  providers: [{
    provide: AuthHttp,
    useFactory: authHttpServiceFactory,
    deps: [Http, RequestOptions]
  }]
})
export class AuthModule { }


//HttpService
get(url: string): Observable<any> {
    return this.http.get(endpoint).map(data => data.json());
  }


//LoginComponent
login() {
    this.httpService.get(urlToLogin).subscribe(
      data => {
        localStorage.setItem('token', data.access_token);
      }
    );
}

这些是寻找你的前端配置的地方,你也可以按照库的页面上的教程,因为它是我实现它的方式,只是我在这里和那里添加了一些抽象,只是为了让你知道从哪里开始.

标签:angular6,javascript,angular,typescript
来源: https://codeday.me/bug/20190731/1587351.html