Open ywbestPark opened 1 year ago
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 토큰 생성
String token = JwtTokenManager.generateToken("user123");
Log.d(TAG, "Generated Token: " + token);
// 토큰 저장 (SharedPreferences 또는 다른 안전한 저장소를 사용하세요)
TokenManager.saveToken(this, token);
// 토큰 불러오기
String savedToken = TokenManager.getToken(this);
// 토큰 유효성 확인
if (JwtTokenManager.isTokenValid(savedToken)) {
Log.d(TAG, "Token is valid.");
// API 호출 등의 작업 수행
} else {
Log.d(TAG, "Token is invalid. Refresh or reauthenticate.");
// 토큰 갱신 또는 다시 로그인 수행
}
}
}
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import java.security.Key;
import java.util.Date;
public class JwtTokenManager {
private static final String SECRET_KEY = "your-secret-key"; // 실제로는 보안에 강한 키를 사용하세요
private static final long EXPIRATION_TIME = 15 * 60 * 1000; // 토큰 만료 시간 (15분)
public static String generateToken(String subject) {
Date now = new Date();
Date expirationDate = new Date(now.getTime() + EXPIRATION_TIME);
Key secretKey = Keys.hmacShaKeyFor(SECRET_KEY.getBytes());
String token = Jwts.builder()
.setSubject(subject)
.setIssuedAt(now)
.setExpiration(expirationDate)
.signWith(secretKey, SignatureAlgorithm.HS256)
.compact();
return token;
}
public static boolean isTokenValid(String token) {
// 토큰 유효성 확인 로직
try {
Claims claims = Jwts.parserBuilder()
.setSigningKey(SECRET_KEY.getBytes())
.build()
.parseClaimsJws(token)
.getBody();
Date expiration = claims.getExpiration();
Date now = new Date();
return !expiration.before(now);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
import android.content.Context;
import android.content.SharedPreferences;
public class TokenManager {
private static final String PREF_NAME = "token_prefs";
private static final String TOKEN_KEY = "auth_token";
public static void saveToken(Context context, String token) {
SharedPreferences preferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(TOKEN_KEY, token);
editor.apply();
}
public static String getToken(Context context) {
SharedPreferences preferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
return preferences.getString(TOKEN_KEY, null);
}
}