Хм, JWT и так придуман для безопасности. И что значит для каждого токена генерировать уникальный ключ? Секретный ключ для того и нужен, чтобы подписывать токены. Секретный ключ знает только сервер. Сервер сгенерил и подписал токен, отдал на фронт, далее фронт сделал запрос, отослав вместе с запросом токен, а сервер, зная секретный ключ, декодирует этот токен и идентифицирует пользователя, не обращаясь в БД.