2015-09-23 2 views
0

Я создаю API для стека MEAN. Я смог успешно создать API для модели, называемой вопросами. Он работает для запросов GET, POST, DELETE и PUT.Аутентификация API NodeJS

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

Моего вопроса, как я положил какое-то аутентификация в этом случае? Так как пользователи могут получить доступ к веб-странице с вопросами, даже без проверки подлинности, как мне запретить кому-либо обращаться к API и получать свалку всех вопросов?

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

Благодаря

+0

Я не понимаю - как вы различаете пользователей, которые могут видеть вопросы и кто не может их видеть, и оба они не прошли проверку? – prasun

+0

То, что я имею в виду, это то, как я могу помешать кому-то программировать получение всех вопросов. Как я могу убедиться, что только веб-приложение или скажем мобильное приложение могут получить данные из API? –

+0

попробуйте добавить на стороне клиента javascript-переадресацию в ответ и добавить проверку на стороне сервера, если пользователь перенаправляется с нужного маршрута, если кто-то обращается к не-браузерному интерфейсу javascript не будет выполняться, для API вы можете попробовать перенаправить в iframe и использовать окно. postMessage на стороне клиента для связи с родительским фреймом – prasun

ответ

0

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

Это означает, что угловая сторона столкнется с чем-то вроде «host/pagename», и в выражении этот запрос get вызовет другую функцию внутри контроллера, который будет извлекать данные (пользователю не нужно знать о том, что происходит в этой функции, так как это серверная сторона), вы можете использовать шаблоны Jade, чтобы сделать что-то вроде res.render ('yourtemplate', {data: 'yourdata'}), чтобы отобразить страницу для вашего пользователя, не давая ему прямого доступа к api

Смежные вопросы