无法在Node.JS中检索会话

时间:2017-02-18 13:58:14

标签: javascript angularjs node.js session

Hello Everyone我正在实现一个角度应用程序,Node.js在后端运行。我在角度JS中设置会话,我已经建立了自己的工厂,我在我的节点js服务器中使用socket.io我从node.js服务器路由应用程序。我想限制未经身份验证的用户访问该页面,但我必须在我的node.js服务器中检索会话值,我无法这样做。我正在附上我的代码片段。

Server.js

 var fs = require('fs');
    var express = require('express');
    var https = require('https');
    var path = require('path');
    var options = {
        key: fs.readFileSync(path.join(__dirname, 'fake-keys/privkey.pem')),
        cert: fs.readFileSync(path.join(__dirname, 'fake-keys/fullchain.pem')),
        ca: fs.readFileSync(path.join(__dirname, 'fake-keys/chain.pem'))

    };
    var PORT = 9001;
    var HOST = '192.168.1.2';
    app = express();
    app.use(express.static(__dirname));

    server = https.createServer(options, app).listen(PORT, HOST);
    console.log('HTTPS Server listening on %s:%s', HOST, PORT);


    // routes
    app.get('/', function(req, res) {
        res.sendfile(path.join(__dirname,'/index.html'));
    });
    app.get('/Admin', function(req, res) {

        res.sendfile(path.join(__dirname,'/view/Admin.html'));
    });

    app.get('/Guest', function(req, res) {
        res.sendfile(path.join(__dirname,'/view/Guest.html'));
    });
        require('./Signaling-Server.js')(server, function(socket) {
            try {
                var params = socket.handshake.query;
                if (!params.socketCustomEvent) {
                    params.socketCustomEvent = 'custom-message';
                }

                socket.on(params.socketCustomEvent, function(message) {
                    try {
                        socket.broadcast.emit(params.socketCustomEvent, message);
                    } catch (e) {}
                });
            } catch (e) {}
        });

会话服务

var myApp = angular.module('SessionService', []);
myApp.factory('SessionService', ['$http', function ($http) {
  return {
    set: function (key, value) {

      return sessionStorage.setItem(key, value);
    },
    get: function () {
      return sessionStorage.getItem(key);
    },
    destroy: function () {
      return sessionStorage.removeItem(key);

    }


  };

}])

我想在我的nodejs服务器中获取会话值,以便我可以跟踪经过身份验证的用户。

1 个答案:

答案 0 :(得分:1)

我没有使用会话我使用cookies我在我的角度js控制器代码中设置了cookie,然后在节点js服务器中我使用cookie-parser来获取cookie! 这是我的代码只是为了帮助别人 控制器代码

    var artistControllers=angular.module('artistControllers',['SessionService','ngCookies']);

artistControllers.controller('ListController',['$scope','$http','SessionService', '$cookies', '$cookieStore','$location',function($scope,$http,$cookies, $cookieStore,SessionService,$location)

  {
          $cookieStore.put('username', username);    

  }
}]);

服务器代码

 app.get('/Admin', function(req, res) {
  console.log("Cookies :  ", req.cookies.username);
    res.sendfile(path.join(__dirname,'/view/Admin.html'));
});