Проверка подлинности сервера по запросу страницы в приложении nodeJS, angularJS

0

Для аутентификации я использую pass.js. Мое требование состоит в том, что никто не должен иметь доступ к определенной странице (например, '/limited'), если вы не вошли в систему.

Прямо сейчас, в моем приложении, каждый может получить доступ к "localhost: 3000/#/limited" url напрямую.

Я могу остановить это и разрешить только зарегистрированным пользователям доступ к странице с помощью решения Rorschach120 в Redirect на всех маршрутах для входа в систему, если он не аутентифицирован.

Но это делается на стороне клиента и не является безопасным, потому что любой может получить доступ к этому коду из браузера.

Так что мне нужно, чтобы запрос на мою страницу отправлялся на сервер, я попробовал решение moka в разделе Как узнать, зарегистрирован ли пользователь в файле passport.js? :

В app.js:

app.get('/restricted', loggedIn, function(req, res, next) {
// req.user - will exist
// load user orders and render them
});

где функция loggedIn() проверяет, вошел ли пользователь в систему или нет.

Но это промежуточное ПО НИКОГДА не звонит, и каждый может получить доступ к странице с ограниченным доступом. Что я могу сделать, чтобы это вызвало?

Я новичок в AngularJS и NodeJS. Я здесь что-то не так? Любая помощь будет оценена.

Теги:
passport.js
routing

1 ответ

0

С этой целью вы можете использовать промежуточное ПО.

app.get('/secure-route', secureMiddleware, myMethod)

let secureMiddleware = function(req, res, next) {

    authCheck(...)
        .then(function(result) {
            // pass
            next()
        })
        .catch(function(err) {
            res.status(401).json({
                code: 401,
                message: 'restricted route'
            })
        })
}
  • 0
    Да, я попробовал это, как описано в вопросе. Но это промежуточное ПО никогда не вызывается. Он напрямую перенаправляется на запрашиваемую страницу. Что я могу делать не так?
  • 0
    Я отредактировал свой вопрос, отметив, что я использую промежуточное программное обеспечение, аналогичное описанному в этом ответе, но оно не называется. Что я должен сделать, чтобы это вызывалось, чтобы проверить, аутентифицирован ли пользователь?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню