我把课程中的passport进行了改写,变为如下
passport.use(
new LocalStrategy(async function(username, password, done) {
request.post(
{
url: '',
form: {
un: username,
pw: password
}
},
function(error, reponse, body) {
if (!error && reponse.statusCode === 200) {
var ret = JSON.parse(body)
if (ret.success) {
return done(null, ret)
} else {
return done(null, false, '登录失败')
}
} else {
return done(null, false, '服务器无响应')
}
}
)
})
)
其他没变更,还是如下
router.post('/signin', async (ctx, next) => {
return Passport.authenticate('local', function(err, user, info, status) {
if (err) {
ctx.body = {
code: -1,
msg: err
}
} else {
if (user) {
ctx.body = {
code: 0,
msg: '登录成功',
user
}
return ctx.login(user)
} else {
ctx.body = {
code: 1,
msg: info
}
}
}
})(ctx, next)
})
然后使用 curl 调用相关接口
curl -d "username=&password=" http://localhost:8080/users/signin
但是控制台却报错:
TypeError: Cannot set property name of which has only a getter
at defaultErrorHanlder (\node_modules\koa-generic-session\lib\session.js:523:12)
at \node_modules\koa-generic-session\lib\session.js:193:9
at Generator.throw ()
at step (\node_modules\koa-generic-session\lib\session.js:3:191)
at \node_modules\koa-generic-session\lib\session.js:3:402
at process._tickCallback (internal/process/next_tick.js:68:7)
是什么原因呢?