passport 登录接口相关的问题
来源:8-4 注册(4)
mokongh
2019-07-13
我把课程中的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)
是什么原因呢?
写回答
1回答
-
快乐动起来呀
2019-07-14
之前有类似问题,自己定义的字段不要与mongodb的关键词冲突,比如id之类的
022019-07-16
相似问题