我是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上。
先谢谢。