46 lines
1.2 KiB
Java
46 lines
1.2 KiB
Java
package com.ruoyi.web.service;
|
|
|
|
|
|
import com.ruoyi.common.core.core.domain.AjaxResult;
|
|
import com.ruoyi.common.core.core.domain.model.LoginBody;
|
|
import com.ruoyi.common.core.exception.ServiceException;
|
|
import com.ruoyi.common.core.utils.SpringUtils;
|
|
import com.ruoyi.system.domain.SysClient;
|
|
|
|
/**
|
|
* 授权策略
|
|
*
|
|
* @author Michelle.Chung
|
|
*/
|
|
public interface IAuthStrategy {
|
|
|
|
String BASE_NAME = "AuthStrategy";
|
|
|
|
/**
|
|
* 登录
|
|
*/
|
|
static String login(LoginBody loginBody, SysClient client) {
|
|
// 授权类型和客户端id
|
|
String clientId = loginBody.getClientId();
|
|
String grantType = loginBody.getGrantType();
|
|
String beanName = grantType + BASE_NAME;
|
|
if (!SpringUtils.containsBean(beanName)) {
|
|
throw new ServiceException("授权类型不正确!");
|
|
}
|
|
IAuthStrategy instance = SpringUtils.getBean(beanName);
|
|
instance.validate(loginBody);
|
|
return instance.login(clientId, loginBody, client);
|
|
}
|
|
|
|
/**
|
|
* 参数校验
|
|
*/
|
|
void validate(LoginBody loginBody);
|
|
|
|
/**
|
|
* 登录
|
|
*/
|
|
String login(String clientId, LoginBody loginBody, SysClient client);
|
|
|
|
}
|