Есть набор роутов, где нужно проверять авторизацию
Но при необходимости новой генерации токенов не хотелось бы их засовывать в
req.tokens
И на каждом последующем роуте проверять
req.tokens
на его наличие
Как из checkAuth можно настроить автоматическую отправку кук, чтобы избавить от логики все остальные роуты?
app.use('/api/v1/users', checkAuth, users)
export function checkAuth(req: Request, res: Response, next) {
Auth.checkAccess(req)
.then(tokens => {
next()
})
.catch(() => {
res.status(401).json('')
})
}
Стандартный ответ куки при авторизации выглядит так
res.cookie('refresh_token', tokens.refresh_token, { httpOnly: true })
res.status(200).json({access_token: `Bearer ${tokens.access_token}`})
Можно ли, чтобы в каждом роуте
api/user, api/friends, api/contacts
и т.д. избежать массового добавления кода по типу
router.post('/user', async (req: Request, res: Response): Promise<void> => {
... await data
if(req.refreshToken) res.cookie('refreshToken', req.refreshToken, { httpOnly: true })
if(req.accessToken) {
res.status(200).json({data, access_token: `Bearer ${req.accessToken}`})
return
}
res.status(200).json({data})
}
Вместо простого
router.post('/user', async (req: Request, res: Response): Promise<void> => {
... await data
res.status(200).json({data})
}
Где мы до этого в middleware проверяли токены и если их обновляли, то добавляли в
req
и делали
next()
Или как это правильно делается?