if (role.equals(UserType.ADMIN_USER.getCode())) { //根据用户名密码从admin表中查询管理员 AdminEntity adminRes = loginService.adminLogin(username, password); Optional.ofNullable(adminRes).orElseThrow(() -> { return new BusinessCodeException(BusinessCode.USER_LOGIN_FAILURE.getMsg(), BusinessCode.USER_LOGIN_FAILURE.getCode()); }); UserVo userVo = new UserVo(); //封装页面用户实体 UserVo user = userVo.setUserId(adminRes.getAdminId()).setName(adminRes.getAdminName()).setRole(UserType.ADMIN_USER.getCode()); //生成jwt //过期时间 int expiredTime = Integer.parseInt(BusinessConstant.JWT_EXPIRED_TIME.getKey()); //分钟过期 String jwtTokenWithExpireTimeMinutes = JwtUtils.createJwtTokenWithExpireTimeMinutes(user, rsaProperties.getPrivateKey(), expiredTime, BusinessConstant.SYSTEM_JWT_PAYLOAD_KEY.getKey(), BusinessConstant.SYSTEM_JWT_ISS.getKey()); //设置redis过期时间 --测试(分钟) redisUtils.setKeyAndSetExpireTime(BusinessConstant.JWT_REDIS_KEY.getKey() + jwtTokenWithExpireTimeMinutes, user.getName() + ":" + user.getUserId(), expiredTime, TimeUnit.MINUTES); //返回token response.setHeader(BusinessConstant.JWT_REQUEST_HEAD.getKey(),jwtTokenWithExpireTimeMinutes); //封装返回类型 return ApiResultHandler.successResult(user); }
时间: 2024-02-14 11:04:45 浏览: 85
这段代码是用来处理管理员用户登录的,首先会根据传入的用户名和密码从admin表中查询是否有对应的管理员信息。如果查询到了,则将其封装成一个UserVo对象,然后生成一个JWT Token并设置过期时间和Redis缓存的过期时间,最后将Token设置在响应头中返回给客户端。如果查询不到管理员信息,则会抛出一个BusinessCodeException异常,返回一个错误信息的ApiResult对象。
阅读全文