コード例 #1
0
ファイル: ShiroDbRealm.java プロジェクト: 83925133/eos
  /** 认证回调函数,登录时调用. */
  @Override
  protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken)
      throws AuthenticationException {
    if (useCaptcha) {
      CaptchaUsernamePasswordToken token = (CaptchaUsernamePasswordToken) authcToken;
      String parm = token.getCaptcha();
      String c =
          (String)
              SecurityUtils.getSubject()
                  .getSession()
                  .getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
      if (parm == null || !parm.equalsIgnoreCase(c)) {
        throw new IncorrectCaptchaException(
            ResourceUtils.getString("msg.login.kaptcha.code.error"));
      }
    }
    UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
    // System.out.println("token.getUsername() : " + token.getUsername());
    EosEmp eosEmp = eosEmpService.findByEno(token.getUsername());
    // byte[] salt = Encodes.decodeHex(operator.getPwdSalt());
    // byte[] salt = Encodes.decodeHex(PropertyUtil.getString("salt"));
    if (eosEmp != null) {
      if (PropertyUtil.getBoolean("encrypt")) {
        return new SimpleAuthenticationInfo(
            new ShiroEmp(String.valueOf(eosEmp.getId()), eosEmp.getEno(), eosEmp.getEname()),
            eosEmp.getEpwd(),
            ByteSource.Util.bytes(Encodes.decodeHex(PropertyUtil.getString("salt"))),
            getName());
      } else {
        return new SimpleAccount(
            new ShiroEmp(String.valueOf(eosEmp.getId()), eosEmp.getEno(), eosEmp.getEname()),
            eosEmp.getPwd(),
            getName());
      }

    } else {
      throw new UnknownAccountException();
    }
  }