我需要在用户登录后为每个后续请求设置一些授权标头.
要为特定请求设置标头,
import {Headers} from 'angular2/http';
var headers = new Headers();
headers.append(headerName, value);
// HTTP POST using these headers
this.http.post(url, data, {
headers: headers
})
// do something with the response
Run Code Online (Sandbox Code Playgroud)
但是以这种方式为每个请求手动设置请求标头是不可行的.
如何在用户登录后设置标头集,并在注销时删除这些标头?
我有一个Angular2应用程序.它在ASP.NET 5(Core)中运行.
它使Http调用控制器工作正常.
但现在我需要建立Cross Site Scripting投影.
如何在每个Http请求上生成新令牌,然后在Angular2应用程序中执行AntiForgeryToken检查?
注意:我在Angular中的数据表单不是从MVC视图生成的,而是完全用Angular2编写的,只调用Web服务.
我见过的所有例子都已过时,不起作用/不起作用.
如何整合在AntiForgeryToken检查Angular2对ASP.NET 5,其中形式是纯粹的角?
谢谢.
因此,我尝试使用JSON Web令牌进行身份验证,并且正在努力弄清楚如何将它们附加到标头并根据请求发送它们.
我试图使用https://github.com/auth0/angular2-jwt,但我无法使用Angular并放弃,并认为我可以弄清楚如何在每个请求中发送JWT或发送它在标题中(最好是标题).它比我想象的要困难一点.
这是我的登录
submitLogin(username, password){
console.log(username);
console.log(password);
let body = {username, password};
this._loginService.authenticate(body).subscribe(
response => {
console.log(response);
localStorage.setItem('jwt', response);
this.router.navigate(['UserList']);
}
);
}
Run Code Online (Sandbox Code Playgroud)
和我的login.service
authenticate(form_body){
return this.http.post('/login', JSON.stringify(form_body), {headers: headers})
.map((response => response.json()));
}
Run Code Online (Sandbox Code Playgroud)
我知道这些并不是真的需要,但也许它会有所帮助!一旦这个令牌被创建并存储它,我想做两件事,在标题中发送它并提取我用它放入的过期日期.
一些Node.js登录代码
var jwt = require('jsonwebtoken');
function createToken(user) {
return jwt.sign(user, "SUPER-SECRET", { expiresIn: 60*5 });
}
Run Code Online (Sandbox Code Playgroud)
现在我只是尝试通过角度服务将其传递回使用此服务的节点.
getUsers(jwt){
headers.append('Authorization', jwt);
return this.http.get('/api/users/', {headers: headers})
.map((response => response.json().data));
}
Run Code Online (Sandbox Code Playgroud)
JWT是我在本地存储中的webtoken,我通过我的组件传递给服务.
我没有任何错误,但当它到达我的节点服务器时,我从来没有在标头中收到它.
'content-type': 'application/json',
accept: '*/*',
referer: 'http://localhost:3000/',
'accept-encoding': 'gzip, deflate, sdch',
'accept-language': 'en-US,en;q=0.8', …Run Code Online (Sandbox Code Playgroud)