Чтобы не разрешить доступ к указанному c маршруту http://localhost: 3000 / B , вы можете определить функции проверки подлинности перед основной функцией для этой конечной точки, а затем прервать последовательность выполнения функции завершив запрос в функциях аутентификации, не позволяя вызывать основную функцию.
Более подробное объяснение:
При определении маршрута ( LINE 27 ) вы можете применить много функций, которые будут вызываться последовательно, но если в одной из этих функций вы завершите sh запрос ( req ), то следующие объявленные функции не будут вызываться, делая основную функцию недоступной;
Когда вы получите запрос в Express, в качестве третьего аргумента вы получите обратный вызов, который вызовет функцию next в определенной цепочке ( LINE 8, 17 )
Пример аутентификации с использованием узла | express:
const express = require('express')
const app = express()
const port = 3000
const authentication = (req, res, next) => {
// todo verify authentication
if (true) {
next() // LINE 8
} else {
res.status(401).json({message: 'not authenticated'}) // LINE 10
}
}
const authorization = (req, res, next) => {
// todo verify authorization
if (true) {
next() // LINE 17
} else {
res.status(401).json({message: 'not authorized'}) // LINE 19
}
}
app.get('/', (req, res) => res.send('Hello World!'))
app.post('/login', (req, res) => res.send({token: 'magic-jwt-token'}))
app.get('/B', authentication, authorization, (req, res) => res.send('B works!')) // LINE 27
app.listen(port, () => console.log(`Example app listening on port ${port}!`))