AuthServiceImpl.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package cn.com.qmth.markingaudit.service.impl;
  2. import java.util.concurrent.TimeUnit;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import com.qmth.boot.core.exception.StatusException;
  6. import com.qmth.boot.core.security.annotation.AuthorizationComponent;
  7. import com.qmth.boot.core.security.service.AuthorizationService;
  8. import com.qmth.boot.tools.signature.SignatureType;
  9. import cn.com.qmth.markingaudit.bean.AkInfo;
  10. import cn.com.qmth.markingaudit.service.MonitorService;
  11. import cn.com.qmth.markingaudit.support.AccessInfo;
  12. import cn.com.qmth.markingaudit.support.CustConstants;
  13. import cn.com.qmth.markingaudit.utils.AuthorizationCreateUtil;
  14. @Service
  15. @AuthorizationComponent(prefix = { CustConstants.URI_PREFIX }, type = SignatureType.SECRET)
  16. public class AuthServiceImpl implements AuthorizationService<AccessInfo> {
  17. @Autowired
  18. private CaffeineCacheService caffeineCacheService;
  19. @Autowired
  20. private MonitorService monitorService;
  21. @Override
  22. public AccessInfo findByIdentity(String identity, SignatureType signatureType, String path) {
  23. String secret = caffeineCacheService.get(identity);
  24. if (secret == null) {
  25. AkInfo ak = getAk(identity);
  26. if (ak == null) {
  27. throw new StatusException("未找到学校信息,code 错误");
  28. }
  29. secret = AuthorizationCreateUtil.buildApiSecret(ak.getAccessKey(), ak.getAccessSecret());
  30. caffeineCacheService.set(identity, secret, 5, TimeUnit.MINUTES);
  31. }
  32. return new AccessInfo(identity, secret);
  33. }
  34. private AkInfo getAk(String schoolCode) {
  35. return monitorService.getAk(schoolCode);
  36. }
  37. }