2017-02-18 69 views
2

大家好我正在實施一個角度的應用程序與Node.js運行在後端。我設置會話角JS,我已經使我自己的工廠,因爲我使用套接字。 io在我的節點js服務器,我也從node.js服務器路由應用程序。我想限制未經身份驗證的用戶訪問該頁面,但是我必須檢索我無法這樣做的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

而不是使用我使用cookie的會話我在我的角度js控制器代碼中設置cookie,然後在節點js服務器中,我使用cookie分析器來獲取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')); 
});