2015-11-20 3 views
-1

Я хочу проверить, проверен ли пользователь из бэкэнда, прежде чем что-либо еще загрузилось в моем угловом приложении, чтобы исходный код не загрузился. Первоначальный запрос, который будет отправлен на задний конец, будет состоять в том, чтобы проверить, аутентифицирован ли пользователь. Если это так, приложение будет загружено.Загрузка углового приложения из бэкэнда

В качестве альтернативы, я хотел бы узнать, как я могу проверить свою проверку подлинности на бэкэнд при запросе страницы и отправить другой контент в зависимости от того, вошел ли пользователь в систему или нет.

Как я могу это сделать?

app.use(function(req, res, next) { 
    console.log(req); 
next(); 
}); 

app.all('*', function(req, res, next) { 
    console.log(req); 
    res.send('hey'); 
}) 

Почему это не работает в моем приложении-узле?

ответ

0

Если вы используете движок рендеринга, например, нефрит. В вашем шаблоне нефрита, который загружает вас, вы можете вставлять углы и встраивать ng-view на указанный нефритовый шаблон.

Итак, у вас есть дескриптор сервера с использованием шаблона нефрита tk, который отображает вашу открытую/общедоступную страницу, а затем аутентифицируется. Как только они пройдут ваш тест Auth, перенаправьте страницу на шаблон нефрита, который имеет угловое значение. затем jade будет отображать страницу, как только страница загрузится, угловые вызовут, и ваше угловое приложение захватит страницу.

Просто будьте осторожны, если вы используете URI, которые накладываются на маршруты вашего сервера и ваши URI угловых шаблонов, поскольку они будут запускать любое промежуточное ПО на этих маршрутах во время вызова ajax.

0

У вас может быть аутентификация вашего бэкэнда при запросе страницы и отправка другого контента в зависимости от того, вошел ли пользователь в систему или нет.

Другой способ - разрешить службу в вашей конфигурации маршрута, которая проверяет подлинность до того, как маршрут будет разрешен. https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

+0

Первое, что я хочу. Я хочу проверить свою проверку подлинности на бэкэнд при запросе страницы, но как мне это сделать с точки зрения Node/Express? –

0

Я даю очень полезный учебник о authentication with token; в целом идея заключается в использовании перехватчика, который проверяет, был ли пользователь аутентифицирован, в случае, если пользователь не аутентифицировал перенаправление на страницу по умолчанию или на вход.

0

Необходимо проверить подлинность своего пользователя и как-либо проверить его авторизацию. Например, если вы используете аутентификацию на основе session (что очень похоже на то, как работают сеансы PHP), у вас может быть сайт /login, который отображает страницу входа пользователя. С помощью специального промежуточного программного обеспечения expressjs вы можете перенаправить неавторизованных пользователей или ответить 401 Unauthorized/403 Forbidden.

app.use(require('cookie-parser')()); 
app.use(require('express-session')()); 
// ... 

app.post('/login', function (req, res, next) { 
    if (credentialsAreOK(req) { 
    req.session.authorized = true; 
    res.redirect('/pageAfterLogin'); 
    } else { 
    res.send(401); 
    } 
}; 

var checkAuthorization = function (req, res, next) { 
    if (req.session && req.session.authorized) { 
    return next(); 
    } else { 
    res.redirect('/login'); 
    // or return res.send(401); 
    } 
}; 

app.get('/protectedSite', checkAuthorization); 
// or 
app.get('/protectedSite', checkAuthorization, protectedSiteHandler);