egg中无需生成随机数作为用户标识的sessionId,并且将sessionId设置为浏览器的cookie,因为已经封装好了,这块我们不用自己去做;
我们只需要登陆校验成功后,保存用户信息到session中即可
public async index(){
const { ctx } = this;
try {
// 1.校验数据和验证码
this.validateUserInfo();
const data = ctx.request.body;
ctx.helper.verifyImageCode(data.captcha);
const user = await ctx.service.user.getUser(data);
//第一步:将校验通过的数据存储到session中即可
ctx.session.user = user;
ctx.success(user);
}catch (e) {
if(e.errors){
ctx.error(400, e.errors);
}else{
ctx.error(400, e.message);
}
}
}
如何判断用户是否在登陆状态?
//第二步:判断用户是否在登陆状态
public async isLogin() {
const { ctx } = this;
const user = ctx.session.user;
if (user) {
ctx.success(user);
} else {
ctx.error(400, '还没有登录');
}
}
如何测试?
比如前端服务器运行在8080端口,后端服务器运行在7001端口,
在谷歌浏览器上前端服务器上进行登陆之后,地址栏输入http://127.0.0.1:7001/islogin,就能获取到用户已登录的详细信息了;
但是我们换成IE浏览器(即更换了客户端),这个客户端是没有登陆的,输入
http://127.0.0.1:7001/islogin,就显示用户未登录了;
版权声明:本文为qq_45189315原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。