登陆证书得创建

登陆证书里起码要有登陆用户名,密码,,失效时间,每次登陆得唯一编码

 

数据库和类创建完后就是根据用户名和密码创建登陆凭证了。

    private Certificate buildCertificate(String loginName,String password) throws Exception{
        Certificate certificate=new Certificate();
        certificate.setLoginName(loginName);
        String passwordEncode=DESUtil.encrypt(password,Constant.PRIVATE_DES_KEY);
        certificate.setPassword(passwordEncode);//passwordEncode密码加密后得,这里采用得BASE64加密方法
        String token=UUID.randomUUID().toString().replace("-", "");//生成唯一编号
        certificate.setToken(token);//token凭证唯一编号
        long currentTime = System.currentTimeMillis() + 72 * 60 * 60 * 1000;  //失效时间为72小时,当前时间加上未来72小时
        certificate.setInvalidTime(new Timestamp(currentTime));
        return certificate;
    }

这样凭证就创建完了。

如果是多个系统,则需要创建系统得标志:

//用户登录  进行判断是否登录成功  进入400系统或者进入后台管理系统   登录失败返回登录页面
    public Map<String,Object> login(String loginName, String password) { 
        Map<String,Object> paramMap=new HashMap<String,Object>();
        
        String retStr="login";
        String token="";
        try {
            
            List<Map<String,Object>> result=enterpriseUsersDao.getEUserIdPermit(loginName);
            String loginRs=eKPDataImport.login(loginName, password);
            System.out.println("************loginRs:"+loginRs);
            JSONObject json = new JSONObject(loginRs);
            
            Integer flag=Integer.valueOf(json.get("flag").toString());
            //Integer flag=1;
            if(flag==1){  //EKP登录成功
                if(result.size()==0||result.size()==1){
                    token=certificateService.insertCertificateDao(loginName, password);
                    if(result.size()==0){
                        retStr="loginManagement"; 
                    }
                    else
                    if("1".equals(result.get(0).get("SystemId").toString())){
                        retStr="loginManagement"; //登录后台
                    }else{
                        retStr="login400";      //登录400系统标识
                    }
                }else{
                    token=certificateService.insertCertificateDao(loginName, password);
                    retStr="loginManagement"; //登录后台标识
                }
            }else{
                paramMap.put("target", retStr);
                paramMap.put("token", token);
                return paramMap;
            }
            
        } catch (RemoteException|ExceptionException e) {
            paramMap.put("target", retStr);
            paramMap.put("token", token);
            return paramMap;
        } 
        paramMap.put("target", retStr);
        paramMap.put("token", token);

        return paramMap;
    }

登陆前判断标识是有效的,而不是非法的:

public boolean tokenValidation(String token){
        Certificate certificate=certificateService.getCertificate(token);
        if(certificate==null)
            return false;
        else
            return true;
    }

其中dao层里的语句有:

public Certificate getCertificate(String token){
        String sql="SELECT c.*,e.EUserId FROM t_Certificate c left join t_EnterpriseUsers e on c.LoginName=e.LoginName WHERE Token=:token AND invalidTime >:invalidTime";
        Map<String,Object> paramMap=new HashMap<String,Object>();
        paramMap.put("token", token);
        paramMap.put("invalidTime", new Timestamp(System.currentTimeMillis() ));//失效时间必须大于当前时间
        List<Certificate> rs=this.namedJdbcTemplate.query(sql, paramMap, this.table.getRowMapper());
        if(rs.size()>0)
            return rs.get(0);
        else
            return null;
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值