egg中登陆状态的服务端存储流程

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版权协议,转载请附上原文出处链接和本声明。