android--OkHttp3을 통해 Token 차단 실효
2476 단어 android
1. 인터페이스 요청: 예컨대test
2.test의 http code 차단하기: 401이면 차단하고 RefreshToken을 통해 최신accesstoken 및refreshtoken,
3. Request를 통해 요청을 다시 터치하고 테스트 인터페이스를 요청합니다
말을 많이 하지 않고 바로 코드를 붙이다
okHttpBuilder
OkHttpClient.Builder okHttpBuilder = new OkHttpClient.Builder();
okHttpBuilder.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS);
사용자 정의 token 차단기:
public class TokenInterceptor implements Interceptor {
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
Request request = chain.request();
request.newBuilder().header("accessToken", PreferencesUtil.getInstance().getString(PreferencesUtil.Name.ACCESS_TOKEN));
Response response = chain.proceed(request);
int responseCode = response.code();
if (responseCode == ErrorCode.ERR_CODE_401) {
String refreshToken = PreferencesUtil.getInstance().getString(PreferencesUtil.Name.REFRESH_TOKEN);
Call call = ApiRequest.getHttpApi().getToken(Constant.WX_APP_ID, refreshToken);
retrofit2.Response execute = call.execute();
if (execute.isSuccessful()) {
RefreshTokenResponse refreshTokenResponse = execute.body();
if (refreshTokenResponse.code == ErrorCode.SUCCESS) {
PreferencesUtil.getInstance().putString(PreferencesUtil.Name.REFRESH_TOKEN, refreshTokenResponse.data.refreshToken);
PreferencesUtil.getInstance().putString(PreferencesUtil.Name.ACCESS_TOKEN, refreshTokenResponse.data.accessToken);
Request newRequest = request.newBuilder()
.header("accessToken", PreferencesUtil.getInstance().getString(PreferencesUtil.Name.ACCESS_TOKEN))
.build();
response.body().close();
return chain.proceed(newRequest);
} else {
failed();
}
} else {
failed();
}
}
return response;
}
private void failed() {
// ,do something
}
}
마지막으로 okHttp Builder.addInterceptors(new TokenInterceptor) - 차단을 추가합니다.
주의해야 할 점은accessToken은 반드시 헤더에 넣어야 한다는 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.