Commit 5c659856 by yuwei

2.0.0项目初始化

parent 91cbedb3
package cn.datax.auth.aspect;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.http.ResponseEntity;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.stereotype.Component;
@Component
@Aspect
@Slf4j
public class AuthTokenAspect {
@Around("execution(* org.springframework.security.oauth2.provider.endpoint.TokenEndpoint.postAccessToken(..))")
public Object handleControllerMethod(ProceedingJoinPoint joinPoint) throws Throwable {
DataOauthResponse dataOauthResponse = new DataOauthResponse();
Object proceed = joinPoint.proceed();
if (proceed != null) {
ResponseEntity<OAuth2AccessToken> responseEntity = (ResponseEntity<OAuth2AccessToken>)proceed;
OAuth2AccessToken body = responseEntity.getBody();
if (responseEntity.getStatusCode().is2xxSuccessful()) {
dataOauthResponse.setCode(200);
dataOauthResponse.setSuccess(true);
dataOauthResponse.setData(body);
} else {
log.error("error:{}", responseEntity.getStatusCode().toString());
dataOauthResponse.setCode(500);
dataOauthResponse.setMsg("客户端授权失败");
dataOauthResponse.setSuccess(false);
}
}
return ResponseEntity
.status(200)
.body(dataOauthResponse);
}
}
package cn.datax.auth.aspect;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import java.io.Serializable;
@JsonSerialize(using = DataOauthResponseSerializer.class)
@Data
public class DataOauthResponse implements Serializable {
private static final long serialVersionUID = 1L;
private boolean success;
private int code;
private String msg;
private Object data;
}
package cn.datax.auth.aspect;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import java.io.IOException;
import java.util.Map;
public class DataOauthResponseSerializer extends StdSerializer<DataOauthResponse> {
public DataOauthResponseSerializer() {
super(DataOauthResponse.class);
}
@Override
public void serialize(DataOauthResponse value, JsonGenerator gen, SerializerProvider provider) throws IOException {
OAuth2AccessToken oAuth2AccessToken = (OAuth2AccessToken) value.getData();
gen.writeStartObject();
gen.writeNumberField("code", value.getCode());
if(StrUtil.isNotBlank(value.getMsg())){
gen.writeStringField("msg", value.getMsg());
}
gen.writeBooleanField("success", value.isSuccess());
gen.writeNumberField("timestamp", System.currentTimeMillis());
if(null != oAuth2AccessToken){
Map<String, Object> map = oAuth2AccessToken.getAdditionalInformation();
map.put("access_token", oAuth2AccessToken.getValue());
map.put("token_type", oAuth2AccessToken.getTokenType());
map.put("refresh_token", oAuth2AccessToken.getRefreshToken().getValue());
map.put("expires_in", oAuth2AccessToken.getExpiresIn());
map.put("scope", oAuth2AccessToken.getScope());
gen.writeObjectField("data", map);
}
gen.writeEndObject();
}
}
......@@ -18,6 +18,8 @@ import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
@Slf4j
@RestController
public class LoginController extends BaseController {
......@@ -57,7 +59,11 @@ public class LoginController extends BaseController {
paramsMap.set("client_id", clientId);
paramsMap.set("client_secret", clientSecret);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity(paramsMap, null);
return restTemplate.postForObject(accessTokenUri, request, R.class);
Object object = restTemplate.postForObject(accessTokenUri, request, Object.class);
if(null != object){
return R.ok().setData(object);
}
return R.error();
}
@DeleteMapping("/logout/{token}")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment