登录鉴权步骤

1. 路由里写鉴权

1
router.post('/api/login', app.passport.authenticate('local', { successRedirect: '/api/login/authCallback' }));

2. // config/plugin.js 同时安装egg-passport模块

exports.passport = {
enable: true,
package: ‘egg-passport’,
};

3.app.js里导入 导入鉴权逻辑

module.exports = app => {
require(‘./init/session’)(app)
require(‘./init/passLocal’)(app)
};

4.init/passLocal.js 里加入鉴权的逻辑

5.init/session.js 里有model为Session的函数,所以要新建model在app文件夹下,new Schema({ })

6.调试时发现post请求,但是url后面还是带着参数,仔细查看文档,原来是axios请求参数为data时会自动序列化为json格式的,在post 的body里,export const fqLogin = {

async login(data) { // 注意: 这个地方要写data,axios会序列化为json
return await http({
url: ‘/myApi/api/login’,
method: ‘post’,
data
})
}
}

7. init/passLocal.js里面。先去验证req.body里验证码和session.code 是否一致,如果一致,才往下走查找用户的逻辑

8. 查找用户时,调用ctx.service.users.login(user) 服务,于是,在service下面建users.js文件,里面其实就是调用数据库方法查找数据,如果找到了,那么登录成功。自此,鉴权登录逻辑完成。