maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании

Авторизация через vk.api и разграничение доступа к определенным страницам сайта?

Добрый день. Так как не знаком с серверными технологиями, пока не знаю куда копать.
Ситуация: на сайте есть авторизация через Вконтакте. После того как юзер авторизован - устанавливается какая-то кука? Или что еще? (авторизация вк работает через Open Auth)
Мне нужно как-то индентифицировать пользователя (могу легко получить его vk id) и выдать ему права на просмотр определенных страниц. У другого юзера может быть другой набор страниц.
Использую node.js + express
Каков процесс такого разграничения доступа? Я должен записывать что то в монго базу? Делать "сессию" ?) Как видите, вопрос у меня совсем как от чайника, и конкретно я его не могу сформулировать, так как не знаю как выглядит сам процесс авторизации и аутентификации пользователя. Что рекомендуете почитать небольшого объема?
Спасибо.
  • Вопрос задан
  • 5814 просмотров
Решения вопроса 1
@Kilai
Для работы с OAuth на данный момент удобрение всего использовать модуль passport.js. Что касается разграничения доступа. Вместо сокращенной записи

app.get('/route', function(req, res) {
  // ...
});


можно использовать

app.get('/route', [loadUser1, loadUser2, ..., loadUserN], function(req, res) {
  // ...
});


где loadUser1, loadUser2, ..., loadUserN - некоторые функции, которым передаются 3 параметра (req, res, next). next() вызывает следующую функцию в списке. С помощью req можно получить/добавить данные сессии или ,если настроен passport.js, объект passport в котором находиться вся информация от VK. res.redirect('/'); перенаправит неугодных на соответствующую страницу.

function loadUser(req, res, next) {
  if (req.session.user_id) {
    next();
  }
  else {
    res.redirect('/sessions/new');
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dudeonthehorse
@dudeonthehorse
Email Developer
VK.Auth.getLoginStatus(function(response) {
  if (response.session) {
    /* Сверяем данные сессии от вконтакта с доступами для этого пользователя в базе. Если нет записи для этого пользователя, то создаем ее. */
  } else {
    /* Пшел вон */
  }
});

То есть при первом входе пользователя вконтакта в систему ему должны быть назначены соответствующие права. А уж при последующих посещениях они должны проверяться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы