如何使用middlewre在loopback中使用session

时间:2018-05-24 07:30:42

标签: loopbackjs strongloop

我是环回新手,不知道如何在环回中执行以下操作

  1. 我想在使用中间件的会话中设置访问令牌和其他值,因为我在loopback的服务器文件夹中找到了这个东西

    "session": {}, 
    
    在middleware.json中

    但不知道如何使用它,因为文档不多

  2. 我想在会话中间件中使用条件,如果我有会话值,那么继续扔到登录页面

  3. 注意我已经安装了这个npm install express-session

1 个答案:

答案 0 :(得分:0)

你能对你想要的更具体一点吗?但我会解释一下如何处理认证会议,有两种本地方式可以对待它们;第一个是使用更多raw reading拉动来建模api,第二个是使用JWTaccessTokenPassport.JS对齐。

今天有Loopback 3.x

有两个例子

基本上将raw readingapp.post('/login', function(req, res)一起使用,如果您的客户端已成功通过身份验证,则使用客户端的accessToken生成cookie,例如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);
        });
      }
    });
  });

我希望我已经阐明了你的想法:]我在这里回答你的问题。