NodeJS& ExpressJS:登录后如何在会话中存储用户信息?

时间:2017-03-29 11:59:21

标签: node.js session express

我做了很多研究,但我是新手,我找不到具体的东西。 当用户登录时,我想在会话中存储一些用户信息,如Name,Profile_picture,Id,所以我可以在导航栏中使用它。

我怎样才能做到这一点?

例如在PHP中太简单了,只需添加这行代码,信息就会保留在您访问的页面中(会话到期之前)

session_start();
$_SESSION['user_id']

2 个答案:

答案 0 :(得分:2)

您必须创建快速会话:https://www.npmjs.com/package/express-sessions

然后像这样存储会话:

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
  <head>
    <script src="script.js"></script>
  </head>

  <body>
    <div ng-app="myApp" ng-controller="odinvite">
      <div>
        <br />
        <br />

      $location.url() = {{location.url()}}<br />
      $location.search() = {{loc1}}<br />
      keyword valus is  {{mytry}}
  </div>
  {{mytry}}
    </div>
  
<script>
var app = angular.module('myApp',[]);

app.controller('odinvite', function ($scope, $location)
    {
        //$scope.mytry = 5;
        
        $scope.location = $location;
      $location.url('http://fiddle.jshell.net/bar2o6gf/3/show/light/?username=7');
  $scope.loc1 = $location.search() ;    
    if($location.url().indexOf('username') > -1){    
        $scope.mytry= $location.search().username ;    
               
    }
  
    }
);

</script>

</body>
</html>

此会话将在您访问网页时存储。如果要为cookie设置值,只需在请求中请求cookie并设置一些值:

let session = require("express-session");

app.use(session({
    secret: "secret",
    resave: false,
    saveUninitialized: true,
    cookie: {secure: true,
        httpOnly: true,
        maxAge: 1000 * 60 * 60 * 24
    }
}));

答案 1 :(得分:1)

您可以使用快速会话或Cookie会话(https://www.npmjs.com/package/cookie-session

如果你使用cookie session&amp;您创建了任何更改会话变量或在服务器端,然后无需重新启动服务器

它可以帮助您提高开发速度,因为您无需重启服务器。

app.use(cookieSession({
 name: 'session',
 keys: ['key1', 'key2']
}))

app.get('/', function (req, res, next) {
  // Update views 
  req.session.views = (req.session.views || 0) + 1

  // Write response 
  res.end(req.session.views + ' views')
})