wangzhibo
6 天以前 3f249e399659dcd09d3fe58071b146e50e45c17f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { Config, Middleware } from '@midwayjs/core';
import { NextFunction } from '@midwayjs/socketio';
import * as jwt from 'jsonwebtoken';
 
@Middleware()
export class CsSocketTokenMiddleware {
  @Config('module.user.jwt')
  appJwtConfig;
 
  @Config('module.base.jwt')
  adminJwtConfig;
 
  resolve() {
    return async (ctx, next: NextFunction) => {
      try {
        // 获得连接参数
        const isAdmin = ctx.handshake.auth.isAdmin;
        const token = ctx.handshake.auth.token;
        const data = jwt.verify(
          token,
          isAdmin ? this.adminJwtConfig.secret : this.appJwtConfig.secret
        );
        ctx.connData = {
          userId: isAdmin ? data.userId : data.id,
          isAdmin,
        };
      } catch (error) {
        ctx.emit('sys', '连接失败');
        return;
      }
      return await next();
    };
  }
}