我不知道我的解决方案是否是最好的,但它似乎是有效的,如果有人有更好的解决方案,我会接受他的。
interceptor
constructor(private injector: Injector) { }
intercept(req, next) {
const auth = this.injector.get(AuthService);
const token = auth.getToken();
if (token) {
const tokenizedReq = req.clone({
setHeaders: ({
'Content-Type': 'application/json',
'x-session': token
})
});
return next.handle(tokenizedReq);
} else {
const tokenizedReq = req.clone({
setHeaders: {
'Content-Type': 'application/json'
}
});
return next.handle(tokenizedReq);
}
}
login service
login(username, password) {
const data = {
username: username,
password: password
};
return this.http.post(this.login_url, data, { observe: 'response' });
}
所以请注意,我添加了一条else语句,如果用户登录,请添加令牌,否则不要添加它。