【问题标题】:Unable to retrieve Sessions in Node.JS无法在 Node.JS 中检索会话
【发布时间】:2017-02-19 00:30:02
【问题描述】:

大家好,我正在实现一个在后端运行 Node.js 的 Angular 应用程序。我在 Angular JS 中设置会话,我已经为此创建了自己的工厂,我在我的节点 js 服务器中使用了 socket.io,并且我正在从 node.js 服务器路由应用程序。我想限制未经身份验证的用户访问该页面,但我必须在我的 node.js 服务器中检索会话值,而我无法这样做。我附上了我的代码 sn-ps。

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 服务器中获取会话值,以便我可以跟踪是否经过身份验证的用户。

【问题讨论】:

    标签: javascript angularjs node.js session


    【解决方案1】:

    我没有使用会话,而是使用了 cookie,而是在我的 Angular 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'));
    });
    

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多