@Boris007

Как правильно отдавать обновленные токены в роутах?

Есть набор роутов, где нужно проверять авторизацию
Но при необходимости новой генерации токенов не хотелось бы их засовывать в 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()

Или как это правильно делается?
  • Вопрос задан
  • 241 просмотр
Пригласить эксперта
Ответы на вопрос 1
Daemon23RUS
@Daemon23RUS
Что то мне кажется, вы чего то не договариваете, потому как не помню такой проблемы у себя картинка для уточнения процесса обновления токена. 6553e825e7bd0707388142.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы