实现跨域登录遇到的问题:无法设置session
今天在准备实现跨域登录,在后台/login路由中登录成功节点设置req.session.username = user.username,运行失败。
代码如下:
1 // 跨域登录案例 2 app.post('/login', (req, res) => { 3 // 调用formidable下的IncomingForm构造函数创建表单解析实例化对象form 4 var form = new formidable.IncomingForm(); 5 // 模拟数据库 6 var obj = { 7 username: 'canjia', 8 password: 123456 9 }; 10 // 调用form下的parse()方法解析前端传的表单数据 11 form.parse(req, (err, fields, files) => { 12 const { username, password } = fields; 13 if (username == obj.username && password == obj.password) { 14 // 在ajax发送的请求的session对象中加入username属性
req.session.username = username; 15 res.send('登录成功'); 16 return; 17 } else { 18 res.send('用户名或者密码错误') 19 } 20 }) 21 })
前端报错:POST http://localhost:3002/login net::ERR_CONNECTION_RESET,
后端报错:
D:\WEB前端\案例\Ajax\server2\app.js:56
req.session.username = user.username;
^
ReferenceError: user is not defined
at form.parse (D:\WEB前端\案例\Ajax\server2\app.js:56:36)
at IncomingForm.<anonymous> (D:\WEB前端\案例\Ajax\node_modules\formidable\lib\incoming_form.js:107:9)
at IncomingForm.emit (events.js:182:13)
at IncomingForm._maybeEnd (D:\WEB前端\案例\Ajax\node_modules\formidable\lib\incoming_form.js:557:8)
at MultipartParser.parser.onEnd (D:\WEB前端\案例\Ajax\node_modules\formidable\lib\incoming_form.js:426:10)
at callback (D:\WEB前端\案例\Ajax\node_modules\formidable\lib\multipart_parser.js:102:31)
at MultipartParser.write (D:\WEB前端\案例\Ajax\node_modules\formidable\lib\multipart_parser.js:268:15)
at IncomingForm.write (D:\WEB前端\案例\Ajax\node_modules\formidable\lib\incoming_form.js:159:34)
at IncomingMessage.<anonymous> (D:\WEB前端\案例\Ajax\node_modules\formidable\lib\incoming_form.js:125:12)
at IncomingMessage.emit (events.js:182:13)
[nodemon] app crashed - waiting for file changes before starting...
经过百度后,发现问题是出在没有引入express下的session第三方模块