Express-Session未定义

时间:2017-06-13 06:11:14

标签: node.js angular user-management express-session

我是node.js和angular4的新手,我正在开发一个需要用户身份验证的应用程序。我想将用户角色保存在node.js中的会话中,并希望在多个路由中访问该会话。但是,我无法在其他路线中获得该角色。我已经检查了许多相同的答案但到目前为止没有一个对我有用。 场景: 我在app.js中实现了Express-Session

const session = require('express-session');
const cookieParser = require('cookie-parser')
const app = express();
const port = 4000;

app.use(cors());
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.json());

app.all('*',function(req, res, next){
res.header('Access-Control-Allow-Origin', 'http://localhost:4200');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
res.header("Access-Control-Allow-Credentials", "true");
next();
});

app.use(cookieParser())
app.use(session({secret: "my secret", resave: false, saveUninitialized: true, cookie: { secure: !true }}));

我有一个名为user.js的文件,用于登录用户。验证成功后,用户信息将存储在会话中。

res.json({
      success: true,
      token: 'JWT ' + token,
      user: {
          id: user[0].UserId,
          FirstName: user[0].FirstName,
          MiddleName: user[0].MiddleName,
          LastName: user[0].LastName,
          EmailID: user[0].EmailID,
          PhoneNo: user[0].PhoneNo,
          Role: user[0].Role,
          DistrictId: user[0].DistrictId
        },
    });
    req.session.userRole = user[0].Role;
    req.session.save();

此时, req.session.userRole 具有用户角色。

但是,当我在另一条路线中使用 req.session.userRole 时,例如:dept.js,它会显示 undefined

此外,当我使用Chrome应用:Postman时,它会显示

Session {
   cookie:
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true,
     secure: false },
    userRole: 'ADMN' }

但是当我运行使用Angular4的应用程序时,它只显示

Session {
   cookie:
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true,
     secure: false }

PS:Node.js app在端口上:4000,angular4 app在4200上。

先谢谢。

0 个答案:

没有答案