带令牌和签名的角度身份验证

时间:2018-03-07 08:34:59

标签: angular authentication token graphql apollo

我有graphql-go api使用身份验证,当我测试它时它已经工作了 的卷曲

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Token: someS3cr3tT0ken" \
  -H "Signature: FAC2CA55E128AB2E399474200121DB19442324D7DFF40A919865130DC1A2409" \
  --data '{"transaction_id": "123", "query": "query {validate(phonenumber:\"XXXXXXXXX\") {request_id}}" }' \
  http://localhost:6060/validate

响应应该是:

{"data":{"validate":{"request_id":"22421462-4a3e-43c7-b188-57b6fe1c5575"}}}

但我想用apollo客户端以角度实现它。所以,实质上,是否可以在角度http请求中转换上面的curl命令...? 我已经尝试过使用拦截器并克隆http请求并修改标头,但我只能设置headers: request.headers.set("Authorization", "someS3cr3tT0ken"然后我与headers: request.headers.set("Signature", "FAC2CA55E128AB2E399474200121DB19442324D7DFF40A919865130DC1A2409"结合第二个拦截器,当我这样做时它给了我{{ 1}}当上面的任何参数400 badRequest不正确时,服务器给我的错误响应,事实是,我实际上只是在黑暗中拍摄,并且真的不知道如何设置curl angular,我找到的大部分资源都是3 Header parameter,这在我的情况下不起作用,因为我无法提供getToken from localStorage

更新 这是我的拦截器:

Header signature

然后我创建第二个拦截器以分配@Injectable() export class graphqlInterceptor implements HttpInterceptor{ intercept(request: HttpRequest<any> , next: HttpHandler){ const newRequest = request.clone({ headers: request.headers.set("Token", "someS3cr3tT0ken") // or // headers: request.headers.set("Authorization","someS3cr3tT0ken") //neither of the option above are working. return next.handle(newRequest) ,,

enter image description here 这是上面实现的结果..我知道你会认为这是来自服务器的CORS问题,但如果我将Signature:更改为Token 响应更改为错误请求enter image description here

这里是详细信息XHR enter image description here

谢谢。

1 个答案:

答案 0 :(得分:0)

我的团队建议我需要将express.js放在中间,因此从angular ->express,然后处理req并通过它保存到graphql-server,就可以使用。