не может получить подписанный URL, чтобы не черная дыра - PullRequest
0 голосов
/ 27 мая 2019

Я использую подписанный пакет ниже

https://www.npmjs.com/package/signed

и я импортирую результат подписанного const в файл, отличный от того, в котором я его объявил. когда я пытаюсь использовать метод signature.verifier () для уже подписанных URL-адресов, я каждый раз получаю 'blackholed'

вот код для соответствующего src / models / pictures.js

    import signed from 'signed';
    import User from './users'

    export const signature = signed({
        secret: 'secret string'
      });
const pictureSchema = new mongoose.Schema({
    title: {type: String, maxlength: [50, 'Title must be longer than 50 characters']},
    description: {type: String},
    filename: {type: String},
    thumbname:{type: String},
    thumbswitch:{type: Boolean, default: false},
    user: {type: mongoose.Schema.Types.ObjectId, ref: 'User'}
});

pictureSchema.statics.activePictureUrl = function(data) {
    return data.map(function(picture) {
        return{
            _id: picture._id,
            title: picture.title,
            description: picture.description,

// here's the signatre of the urls passed to the user.

            filename:signature.sign(
                'http://localhost:8080/api/pictures/file/?filename=' + picture.filename),
            thumbname:signature.sign(
                'http://localhost:8080/api/pictures/file/?filename=' + picture.thumbname),
            user: picture.user
        }
    })
}

var picture = mongoose.model('Picture', pictureSchema);

exports.picture = picture;

, который возвращает значение, подобное следующему:

{
    "message": [
        {
            "_id": "5ceb6f4e0fc95861c3d88810",
            "title": "botty",
            "description": "lorem ipsum blah",
            "filename": "http://localhost:8080/api/pictures/file/?filename=image-1558933326636.jpg&signed=r:4808004935;e:1558984163;cea1a69130e6d0e23279a6f12a9bd557",
            "thumbname": "http://localhost:8080/api/pictures/file/?filename=thumb-image-1558933326636.jpg&signed=r:9199843540;e:1558984163;a9f621b1399b070a39f758789bf755e8",
            "user": "5cdca3a16c095a53c8b159c2"
        },

А вот импорт, который я выполняю в файле src / api / pictures.js:

import multer from 'multer';
import path from 'path';
import { Router } from 'express'
import { picture } from '../models/pictures'
import { verifyJWT_MW } from '../middleware/auth'
import { signature } from '../models/pictures'
var gm = require('gm').subClass({imageMagick: true});

const pics = Router()

// Here's the relevant code:

pics.get('/file/',signature.verifier(), (req, res, next) => {
  let filename = req.query.filename;
  res.sendFile(path.resolve('./storage/media') + '/' + filename);
})

, которая возвращает ошибку, которая выглядит следующим образом:

Error: Blackholed
    at blackholed (/home/emi/projects/nodetest/node_modules/signed/src/index.ts:99:25)
    at /home/emi/projects/nodetest/node_modules/signed/src/index.ts:116:28
    at Layer.handle [as handle_request] (/home/emi/projects/nodetest/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/emi/projects/nodetest/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/emi/projects/nodetest/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/emi/projects/nodetest/node_modules/express/lib/router/layer.js:95:5)
    at /home/emi/projects/nodetest/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/home/emi/projects/nodetest/node_modules/express/lib/router/index.js:335:12)
    at next (/home/emi/projects/nodetest/node_modules/express/lib/router/index.js:275:10)
    at Function.handle (/home/emi/projects/nodetest/node_modules/express/lib/router/index.js:174:3)
    at router (/home/emi/projects/nodetest/node_modules/express/lib/router/index.js:47:12)
    at Layer.handle [as handle_request] (/home/emi/projects/nodetest/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/home/emi/projects/nodetest/node_modules/express/lib/router/index.js:317:13)
    at /home/emi/projects/nodetest/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/home/emi/projects/nodetest/node_modules/express/lib/router/index.js:335:12)
    at next (/home/emi/projects/nodetest/node_modules/express/lib/router/index.js:275:10)

Дело в том, что когда я скачал реальное хранилище модулей и запустил тесты, тесты вернули именно то, что ожидалось, хотя я не могу заставить пакет работать на меня.

Любая помощь будет принята с благодарностью. Заранее спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...