как использовать сессию в loopback, используя middlewre - PullRequest
0 голосов
/ 24 мая 2018

Я новичок в loopback и не знаю, как делать следующие вещи в loopback

  1. Я хочу установить токен доступа и другое значение в сеансе, используя промежуточное ПО, для которого я нашелэта вещь в папке сервера loopback

    "session": {}, 
    

    в middleware.json, но не знаю, как это использовать, потому что документации не так много

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

примечание: я уже установил этот npm install express-session

1 Ответ

0 голосов
/ 27 мая 2018

Не могли бы вы быть немного более конкретным о том, что вы хотите?но я объясню немного о том, как обрабатываются сеансы аутентификации, есть два родных способа, которыми вы все это обрабатываете;Первый будет использовать более raw reading тягу для моделирования вашего API, а второй будет использовать JWT в соответствии с accessToken и Passport.JS.

Есть два доступных примерасегодня с Loopback 3.x

В основном, используя raw reading с app.post('/login', function(req, res), затем, если ваш клиент успешно прошел аутентификацию, вы генерируете cookie, используя accessToken вашего клиента, например, res.cookie('access_token', token.id, { signed: true , maxAge: 300000 }); res.set('X-Access-Token', token.id); и, наконец, если вы хотите, вы можете перенести сгенерированныйтокен для ваших страниц:

res.render('home', {
  email: req.body.email,
  accessToken: token.id
});

Теперь с Passport.JS для обеспечения безопасности всех ваших соединений и аутентификации используется промежуточное программное обеспечение:

app.middleware('session:before', cookieParser(app.get('cookieSecret')));
app.middleware('session', session({
  secret: 'Seal Playing Saxophone',
  saveUninitialized: true,
  resave: true,
}));
passportConfigurator.init();

Один из уровней аутентификации рендеринга страницы - var ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn; вы можете использовать это ensureLoggedIn('/login'), чтобы освободить ваши маршруты:

app.get('/auth/account', ensureLoggedIn('/login'), function(req, res, next) {
  res.render('pages/loginProfiles', {
    user: req.user,
    url: req.url,
  });
});

Теперь, если вы просто хотите пропустить все это и уже настроили свою среду и просто хотите создать route, чтобы получитьaccessToken из зарегистрированныхв клиенте используйте шаблон ниже:

  app.get('/session-details', function (req, res) {
    var AccessToken = app.models.AccessToken;
    AccessToken.findForRequest(req, {}, function (aux, accesstoken) {
      // console.log(aux, accesstoken);
      if (accesstoken == undefined) {
        res.status(401);
        res.send({
          'Error': 'Unauthorized',
          'Message': 'You need to be authenticated to access this endpoint'
        });
      } else {
        var UserModel = app.models.user;
        UserModel.findById(accesstoken.userId, function (err, user) {
          // show current user logged in your console
          console.log(user);
          // setup http response
          res.status(200);
          // if you want to check the json in real time in the browser
          res.json(user);
        });
      }
    });
  });

Надеюсь, я высветил ваши идеи:] Я здесь, чтобы ответить на ваши вопросы.

...