Eu tenho um código de servidor rest-api nodejs. Criei public/icon/
uma pasta na raiz do projeto e adicionei alguns ícones lá. Eu quero ver a imagem neste local http://localhost:3000/public/icon/myicon.png
E também tenho algumas funções de autenticação, então eu uso essa rota, a menos que o token de autenticação,
auth.authenticateToken.unless = unless; //check authentication condition is met
app.use(
auth.authenticateToken.unless({ //does not require authentication pages
path: [
{url: "/google/auth", methods: ["GET"]},
{url: "/^\/public\/icon\/([^\/]*)$/", methods: ["GET"]},
{url: "/users/login", methods: ["POST"]},
{url: "/users/register", methods: ["POST"]},
]
})
)
app.use(express.json());
var publicDir = require('path').join(__dirname,'/public');
app.use(express.static(publicDir));
app.get('/public/icon/:filename', (req, res) => {
const filename = req.params.filename;
const filePath = path.join(__dirname, 'public', 'icon', filename);
res.sendFile(filePath, (err) => {
if (err) {
}
});
});
Eu encontrei esta maneira de mostrar fotos, mas quando tento ir para http://localhost:3000/public/icon/myicon.png
a página, recebo, Unauthorized
mas se eu der o token de autenticação, posso ver. Como posso ver este link sem autenticação.
Se meu método tiver alguns problemas para mostrar as fotos, você pode me aconselhar
O problema é que, no
url
parâmetro, seu regex está entre aspas, portanto, na verdade, é lido como uma string, em vez de um regex.Portanto, remova as aspas:
em vez de:
usar: