Oauth2Request
Oauth2Request
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package me.zhyd.oauth.request;
import me.zhyd.oauth.enums.AuthResponseStatus;
import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthToken;
public interface AuthRequest {
/** @deprecated */
@Deprecated
default String authorize() {
throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED);
}
default String authorize(String state) {
throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED);
}
default AuthResponse login(AuthCallback authCallback) {
throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED);
}
default AuthResponse revoke(AuthToken authToken) {
throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED);
}
default AuthResponse refresh(AuthToken authToken) {
throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED);
}
}
/loginByCode
@ResponseBody
@RequestMapping(value = \”/loginByCode\”, method = RequestMethod.POST)
public Result<JSONObject> loginByCode(@RequestBody AuthCallback callback){
Result<JSONObject> result = new Result<>();
String code = callback.getCode();
if(code==null){
result.error500(\”校验码无效\”);
return result;
}
AuthRequest authRequest = factory.get(\”SINOSOFT\”);
AuthResponse<?> response = authRequest.login(callback);
if(response.getCode() == AuthResponseStatus.SUCCESS.getCode()) {
JSONObject data = JSONObject.parseObject(JSONObject.toJSONString(response.getData()));
JSONObject token = data.getJSONObject(\”token\”);
SysUser sysUser = data.getObject(\”rawUserInfo\”, SysUser.class);
//sysUserService.checkUserIsEffective(sysUser);
String accessToken = token.getString(\”accessToken\”);
redisUtil.set(PREFIX_USER_TOKEN_MH+sysUser.getUsername(),accessToken);
sysUser.setPassword(callback.getCode());
//用户登录信息
userInfo(sysUser, result);
LoginUser loginUser = new LoginUser();
BeanUtils.copyProperties(sysUser, loginUser);
baseCommonService.addLog(\”用户名: \” + sysUser.getUsername() + \”,登录成功!\”, CommonConstant.LOG_TYPE_1, null,loginUser);
return result;
}else{
return result.error500(\”授权码错误,登录失败\”);
}
}
AuthRequest authRequest = factory.get(\”SINOSOFT\”);
AuthResponse<?> response = authRequest.login(callback);
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package me.zhyd.oauth.config;
import me.zhyd.oauth.enums.AuthResponseStatus;
import me.zhyd.oauth.exception.AuthException;
public interface AuthSource {
String authorize();
String accessToken();
String userInfo();
default String revoke() {
throw new AuthException(AuthResponseStatus.UNSUPPORTED);
}
default String refresh() {
throw new AuthException(AuthResponseStatus.UNSUPPORTED);
}
default String getName() {
return this instanceof Enum ? String.valueOf(this) : this.getClass().getSimpleName();
}
}
package org.jeecg.config.oauth2;
import me.zhyd.oauth.config.AuthSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* <p>
* 扩展的自定义 source
* </p>
*
* @author yangkai.shen
* @date Created in 2019/10/9 14:14
*/
public enum SinosoftSource implements AuthSource {
/**
* 单点
*/
SINOSOFT {
/**
* 授权的api
*
* @return url
*/
@Override
public String authorize() {
return Oauth2EnumContainer.oauth2WebServer + \”/user/authorize\”;
}
/**
* 获取accessToken的api
*
* @return url
*/
@Override
public String accessToken() {
return Oauth2EnumContainer.oauth2ServerIp + \”/sys/oauth2Server/getTokenByCode\”;
}
/**
* 获取用户信息的api
*
* @return url
*/
@Override
public String userInfo() {
return Oauth2EnumContainer.oauth2ServerIp + \”/sys/loginByToken\”;
}
};
@Component
static class Oauth2EnumContainer {
public static String oauth2WebServer;
public static String oauth2Server;
public static String oauth2ServerIp;
@Value(\”${justauth.extend.config.SINOSOFT.oauth2WebServer}\”)
public void getOauth2WebServer(String oauth2WebServer) {
Oauth2EnumContainer.oauth2WebServer = oauth2WebServer;
}
@Value(\”${justauth.extend.config.SINOSOFT.oauth2Server}\”)
public void getOauth2Server(String oauth2Server) {
Oauth2EnumContainer.oauth2Server = oauth2Server;
}
@Value(\”${justauth.extend.config.SINOSOFT.oauth2ServerIp}\”)
public void getOauth2ServerIp(String oauth2ServerIp) {
Oauth2EnumContainer.oauth2ServerIp = oauth2ServerIp;
}
}
}
package org.jeecg.config.oauth2;
import cn.hutool.http.*;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.enums.AuthResponseStatus;
import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.log.Log;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.request.AuthDefaultRequest;
import me.zhyd.oauth.utils.AuthChecker;
import me.zhyd.oauth.utils.StringUtils;
import me.zhyd.oauth.utils.UrlBuilder;
import java.util.HashMap;
import java.util.Map;
public class Oauth2Request extends AuthDefaultRequest {
private final int timeout = 20000;
public Oauth2Request(AuthConfig config) {
super(config, SinosoftSource.SINOSOFT);
}
public Oauth2Request(AuthConfig config, AuthStateCache authStateCache) {
super(config, SinosoftSource.SINOSOFT, authStateCache);
}
@Override
public AuthResponse<Object> login(AuthCallback authCallback) {
try {
AuthChecker.checkCode(this.source, authCallback);
AuthToken authToken = this.getAccessToken(authCallback);
AuthUser user = this.getUserInfo(authToken);
return AuthResponse.builder().code(AuthResponseStatus.SUCCESS.getCode()).data(user).build();
} catch (Exception e) {
Log.error(\”Failed to login with oauth authorization.\”, e);
int errorCode = AuthResponseStatus.FAILURE.getCode();
String errorMsg = e.getMessage();
if (e instanceof AuthException) {
AuthException authException = (AuthException) e;
errorCode = authException.getErrorCode();
if (StringUtils.isNotEmpty(authException.getErrorMsg())) {
errorMsg = authException.getErrorMsg();
}
}
return AuthResponse.builder().code(errorCode).msg(errorMsg).build();
}
}
@Override
protected AuthToken getAccessToken(AuthCallback authCallback) {
String accessTokenUrl = super.accessTokenUrl(authCallback.getCode());
HttpRequest request = HttpUtil.createRequest(Method.GET, accessTokenUrl);
HttpResponse execute = request.execute();
String body = execute.body();
JSONObject jsonObject = JSONObject.parseObject(body);
String accessToken = jsonObject.getString(\”result\”);
AuthToken authToken = AuthToken.builder().accessToken(accessToken).build();
return authToken;
}
@Override
protected String accessTokenUrl(String code) {
return UrlBuilder.fromBaseUrl(this.source.accessToken()).build();
}
@Override
protected AuthUser getUserInfo(AuthToken authToken) {
String url = super.userInfoUrl(authToken);
HttpRequest request = HttpUtil.createRequest(Method.POST, url);
JSONObject params = new JSONObject();
params.put(\”token\”,authToken.getAccessToken());
request.body(params.toJSONString());
HttpResponse execute = request.execute();
String body = execute.body();
JSONObject jsonObject = JSONObject.parseObject(body);
JSONObject result = jsonObject.getJSONObject(\”result\”);
JSONObject userInfo = result.getJSONObject(\”userInfo\”);
String token = result.getString(\”token\”);
authToken.setAccessToken(token);
return AuthUser.builder().rawUserInfo(userInfo).token(authToken).build();
}
@Override
protected String userInfoUrl(AuthToken authToken) {
return UrlBuilder.fromBaseUrl(this.source.userInfo()).build();
}
@Override
public String authorize(String state) {
return UrlBuilder.fromBaseUrl(this.source.authorize()).queryParam(\”client_id\”, this.config.getClientId()).queryParam(\”redirect_uri\”, this.config.getRedirectUri()).build();
}
}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package me.zhyd.oauth.request;
import com.xkcoding.http.util.UrlUtil;
import java.util.List;
import me.zhyd.oauth.cache.AuthDefaultStateCache;
import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.enums.AuthResponseStatus;
import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.log.Log;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.utils.AuthChecker;
import me.zhyd.oauth.utils.HttpUtils;
import me.zhyd.oauth.utils.StringUtils;
import me.zhyd.oauth.utils.UrlBuilder;
import me.zhyd.oauth.utils.UuidUtils;
public abstract class AuthDefaultRequest implements AuthRequest {
protected AuthConfig config;
protected AuthSource source;
protected AuthStateCache authStateCache;
public AuthDefaultRequest(AuthConfig config, AuthSource source) {
this(config, source, AuthDefaultStateCache.INSTANCE);
}
public AuthDefaultRequest(AuthConfig config, AuthSource source, AuthStateCache authStateCache) {
this.config = config;
this.source = source;
this.authStateCache = authStateCache;
if (!AuthChecker.isSupportedAuth(config, source)) {
throw new AuthException(AuthResponseStatus.PARAMETER_INCOMPLETE, source);
} else {
AuthChecker.checkConfig(config, source);
}
}
protected abstract AuthToken getAccessToken(AuthCallback var1);
protected abstract AuthUser getUserInfo(AuthToken var1);
public AuthResponse login(AuthCallback authCallback) {
try {
AuthChecker.checkCode(this.source, authCallback);
if (!this.config.isIgnoreCheckState()) {
AuthChecker.checkState(authCallback.getState(), this.source, this.authStateCache);
}
AuthToken authToken = this.getAccessToken(authCallback);
AuthUser user = this.getUserInfo(authToken);
return AuthResponse.builder().code(AuthResponseStatus.SUCCESS.getCode()).data(user).build();
} catch (Exception var4) {
Log.error(\”Failed to login with oauth authorization.\”, var4);
return this.responseError(var4);
}
}
private AuthResponse responseError(Exception e) {
int errorCode = AuthResponseStatus.FAILURE.getCode();
String errorMsg = e.getMessage();
if (e instanceof AuthException) {
AuthException authException = (AuthException)e;
errorCode = authException.getErrorCode();
if (StringUtils.isNotEmpty(authException.getErrorMsg())) {
errorMsg = authException.getErrorMsg();
}
}
return AuthResponse.builder().code(errorCode).msg(errorMsg).build();
}
/** @deprecated */
@Deprecated
public String authorize() {
return this.authorize((String)null);
}
public String authorize(String state) {
return UrlBuilder.fromBaseUrl(this.source.authorize()).queryParam(\”response_type\”, \”code\”).queryParam(\”client_id\”, this.config.getClientId()).queryParam(\”redirect_uri\”, this.config.getRedirectUri()).queryParam(\”state\”, this.getRealState(state)).build();
}
protected String accessTokenUrl(String code) {
return UrlBuilder.fromBaseUrl(this.source.accessToken()).queryParam(\”code\”, code).queryParam(\”client_id\”, this.config.getClientId()).queryParam(\”client_secret\”, this.config.getClientSecret
网硕互联帮助中心




![[特殊字符] 纯前端M3U8视频处理工具:在线播放、录制与转换的一站式解决方案-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/02/20260131225721-697e88d1ece9e-220x150.png)

评论前必须登录!
注册