Я пытаюсь добавить основную авторизацию на весь сайт в Express. Если пользователь вводит правильные учетные данные, я бы хотел, чтобы стандартная целевая страница отображалась. Если нет, то пользователь должен быть доведен до страницы «отказано в доступе». Я пытаюсь выяснить, как изменить basic-auth middleware пример для достижения этой цели:Как направить целевую страницу по умолчанию с базовым-auth-промежуточным программным обеспечением в Express
var http = require('http')
var auth = require('basic-auth')
// Create server
var server = http.createServer(function (req, res) {
var credentials = auth(req)
if (!credentials || credentials.name !== 'john' || credentials.pass !== 'secret') {
res.statusCode = 401
res.setHeader('WWW-Authenticate', 'Basic realm="example"')
res.end('Access denied')
} else {
res.end('Access granted')
}
})
Если я использую next();
вместо res.end()
, я получаю сообщение об ошибке undefined
.
var server = http.createServer(function (req, res, next) {
var credentials = auth(req)
if (!credentials || credentials.name !== 'john' || credentials.pass !== 'secret') {
res.statusCode = 401
res.setHeader('WWW-Authenticate', 'Basic realm="example"')
res.end('Access denied')
} else {
next();
}
})
Это то, что мои маршруты выглядеть следующим образом:
app.use('/api/things', require('./api/thing'));
// . . .
// All other routes should redirect to the index.html
app.route('/*')
.get(function(req, res) {
res.sendFile(path.resolve(app.get('appPath') + '/index.html'));
});
спасибо. По какой-то причине, когда я использую код выше, я не получаю приглашение имени пользователя и пароля. Страница загружается, как обычно. Какие-либо предложения? – Ken
Возможно, это то, для чего нужны заголовки ... может быть, вы всегда терпите неудачу при первой попытке и используете заголовок, чтобы сообщить браузеру «показать подсказку». Попробуйте настроить заголовки в ответе 'securityCredentials' 403. Кроме того, если вы не знали, что можете вручную передавать учетные данные в запросе с помощью 'https: // user: password @ domain.com /' – Plato
О, ну, страница загружается каждый раз, потому что я пропустил всю логику auth. вам нужно положить что-то на страницу 'if() {' ... – Plato