java实现读取上传文件key进行安全登录

本文介绍了一种证书校验的方法,包括对上传文件的初步检查(如文件是否为空及后缀名验证),以及进一步的密码校验过程。该流程确保了只有正确的密钥文件才能通过验证。
 /**
  * inputStrem 转成 字符串
  * @param is
  * @return
  */
public static   String inputStream2String(InputStream is){
    StringBuffer buffer = new StringBuffer();
     try{

         BufferedReader in = new BufferedReader(new InputStreamReader(is));

         String line = "";
         while ((line = in.readLine()) != null){
             buffer.append(line);
         }

     }catch(Exception e){
         e.printStackTrace();
     }

     return buffer.toString();
 }

/**
 *  密码校验后,再进行 证书校验
 * @param mcPath
 * @return
 */
private Response  checkKeyAfter(MultipartFile mcPath){

    try{
        /**
         * 后缀 校验通过,验证证书密码
         */

        CmsHallInfo cmsHallInfo  = cmsHallInfoService.findById(5l) ;
        if(cmsHallInfo==null){
            logger.info("无效的key");
            return Response.error(GlobalEnum.GLOBAL_ENUM_APP_CHECKUSER_CODE.getValue(), Constants.DIALOG_LOGIN_FAIL);
        }

        String key = FileUtil.inputStream2String(mcPath.getInputStream());

        if(!key.equals(cmsHallInfo.getValidKey())){
            logger.info("无效的key");
            return Response.error(GlobalEnum.GLOBAL_ENUM_APP_CHECKUSER_CODE.getValue(), Constants.DIALOG_LOGIN_FAIL);
        }

    }catch (Exception e){

    }
    return Response.ok(GlobalEnum.GLOBAL_ENUM_SUCCESS_CODE.getValue(),Constants.DIALOG_LOGIN_SUCCESS);
}

/**
 *
 *  判断file 空处理,后缀名不符合
 * @param request
 * @param mcPath
 * @return
 */
private Response  checkKeyBefore(HttpServletRequest request ,MultipartFile mcPath){

    try {

        if(mcPath==null || mcPath.getSize()==0l){
            logger.info("无效的key.....");
            return Response.error(GlobalEnum.GLOBAL_ENUM_APP_CHECKUSER_CODE.getValue(), Constants.DIALOG_LOGIN_FAIL);
        }
        /** * 校验 后缀名 */
        String type = "" ;
        String keyName = "" ;
        MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
        Iterator<String> iter = multiRequest.getFileNames();
        while (iter.hasNext()) {
            String fileName = iter.next();
            MultipartFile image = multiRequest.getFile(fileName);
            keyName = image.getOriginalFilename();
        }

        if(StringUtils.isNotEmpty(keyName)) {
            if (keyName.lastIndexOf(".") > 0) {
                type = keyName.substring(keyName.lastIndexOf("."));
                if(StringUtils.isNotEmpty(type)){
                    /** 无效的Key*/
                    if(!type.equals(".key")){
                        logger.info("无效的key");
                        return Response.error(GlobalEnum.GLOBAL_ENUM_APP_CHECKUSER_CODE.getValue(), Constants.DIALOG_LOGIN_FAIL);
                    }
                }else{
                    logger.info("无效的key");
                    return Response.error(GlobalEnum.GLOBAL_ENUM_APP_CHECKUSER_CODE.getValue(), Constants.DIALOG_LOGIN_FAIL);
                }
            }
        }else{
            /** * 无效的KEY
             */
            logger.info("无效的key");
            return Response.error(GlobalEnum.GLOBAL_ENUM_APP_CHECKUSER_CODE.getValue(), Constants.DIALOG_LOGIN_FAIL);
        }

    }catch (Exception e){

    }
    return Response.ok(GlobalEnum.GLOBAL_ENUM_SUCCESS_CODE.getValue(),Constants.DIALOG_LOGIN_SUCCESS);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值