我正在尝试使用JWT(Json Web Token)进行授权.在前端我在后端Spring REST api上使用Angular2.我在后端添加了CORS过滤器.
在http请求中,我发送用户名和密码,并在响应的"授权"标题中期望令牌.当我使用Postman时,一切正常,我收到所有标题,包括'授权'.
此外,当我在Chrome控制台中记录流量时(在通过表单进行用户登录时)"响应"中存在"授权"标题,因此很明显它会返回到浏览器.但是当我在我的角度应用程序中列出标题时,数组中只有几个标题:
// auth.service.ts
login(username, password): Observable<boolean> {
// call remote service to authenticate user
return this.http.post(this.authUrl, JSON.stringify({ username: username, password: password }))
.map((response: Response) => {
console.log("Authorization header: " + response.headers.get('Authorization'));
console.log("all headers: " + response.headers.keys());
// TODO - login successful if there's a jwt token in the response
});
}
Run Code Online (Sandbox Code Playgroud)
这两个控制台输出的结果是:
Authorization header: null
all headers: Pragma,Cache-Control,Expires
Run Code Online (Sandbox Code Playgroud)
以下是Google Chrome控制台的屏幕截图,您可以在其中看到客户端上存在所有需要的标头:
服务器端令牌生成(Spring Boot):
public void addAuthentication(HttpServletResponse response, String username) throws UnsupportedEncodingException {
// Token generation …Run Code Online (Sandbox Code Playgroud)