The thing is that I’m trying to get a token from a cookie using the ready-made CookieService library and output it to console.log() – and the most interesting thing is that it is displayed in console.log() and even written to the headers, but the client still gives me an error side – No token provided , I really don’t understand the options for solving this problem anymore, apparently there is a problem in my code that I don’t see
Here is my Interceptor where I am trying to set the token in the headers
I will provide the most basic code that is needed
import { Injectable } from '@angular/core';
import { HttpEvent, HttpHandler, HttpRequest, HttpHeaders, HttpInterceptor } from '@angular/common/http';
import { Observable } from 'rxjs';
import { TokenService } from '../services/token/token.service';
import { CookieService } from 'ngx-cookie-service';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private tokenService: TokenService, private cookieService: CookieService) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const accessToken = this.cookieService.get('accessToken');
if (accessToken) {
req = req.clone({
setHeaders: {
Authorization: `Bearer ${accessToken}`
}
});
} else {
console.error('Access token not found in cookie');
}
return next.handle(req);
}
}
--------------------------------------------------------------------
const login = async (req, res) => {
try {
const { email, password } = req.body;
const user = await User.findOne({ email });
if (!user) {
return res.status(401).json({ message: 'Authentication failed' });
}
const isPasswordValid = await bcrypt.compare(password, user.password);
if (!isPasswordValid) {
return res.status(401).json({ message: 'Authentication failed' });
}
const { accessToken, refreshToken } = generateTokens(user);
res.cookie('accessToken', accessToken, {
maxAge: 30000
});
res.cookie('refreshToken', refreshToken, {
maxAge: 7 * 24 * 60 * 60 * 1000,
});
res.status(200).json({ accessToken, refreshToken });
} catch (error) {
res.status(500).json({ error: error.message });
}
};
--------------------------------------------------------------------
const getUserById = async (req, res) => {
const userId = req.id;
let user;
try {
user = await User.findById(userId, "-password");
console.log('User', user);
} catch(err) {
return new Error(err);
}
if(!user) {
return res.status(404).json({message: "User not found"});
}
return res.status(200).json({user});
};
--------------------------------------------------------------------
const jwt = require('jsonwebtoken');
const verifyToken = (req, res, next) => {
const authorizationHeader = req.headers.authorization;
if (!authorizationHeader) {
return res.status(401).json({ message: "No token provided" });
}
console.log('AuthHeader', authorizationHeader);
const token = authorizationHeader.split(' ')[1];
if (!token) {
return res.status(401).json({ message: "No token found" });
}
console.log('Tokenssss', token);
jwt.verify(token, process.env.SECRET_KEY, (err, decoded) => {
if (err) {
console.error('Error verifying token:', err);
return res.status(400).json({ message: "Invalid token" });
}
req.id = decoded.userId;
next();
});
};
module.exports = verifyToken;
**And routes **
router.post('/login', userAuthController.login);
router.get('/user', verifyToken, userAuthController.getUserById);