IAuthStrategy.java 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package org.dromara.web.service;
  2. import org.dromara.common.core.domain.model.LoginBody;
  3. import org.dromara.common.core.exception.ServiceException;
  4. import org.dromara.common.core.utils.SpringUtils;
  5. import org.dromara.system.domain.SysClient;
  6. import org.dromara.web.domain.vo.LoginVo;
  7. /**
  8. * 授权策略
  9. *
  10. * @author Michelle.Chung
  11. */
  12. public interface IAuthStrategy {
  13. String BASE_NAME = "AuthStrategy";
  14. /**
  15. * 登录
  16. */
  17. static LoginVo login(LoginBody loginBody, SysClient client) {
  18. // 授权类型和客户端id
  19. String clientId = loginBody.getClientId();
  20. String grantType = loginBody.getGrantType();
  21. String beanName = grantType + BASE_NAME;
  22. if (!SpringUtils.containsBean(beanName)) {
  23. throw new ServiceException("授权类型不正确!");
  24. }
  25. IAuthStrategy instance = SpringUtils.getBean(beanName);
  26. instance.validate(loginBody);
  27. return instance.login(clientId, loginBody, client);
  28. }
  29. /**
  30. * 参数校验
  31. */
  32. void validate(LoginBody loginBody);
  33. /**
  34. * 登录
  35. */
  36. LoginVo login(String clientId, LoginBody loginBody, SysClient client);
  37. }