[flutter] 플러터 Riverpod와 JWT 토큰 관리 방법

안녕하세요! 이번에는 플러터(Flutter) 앱 개발에서 Riverpod와 JWT 토큰을 함께 사용하여 토큰을 관리하는 방법에 대해서 알아보겠습니다.

1. Riverpod란?

Riverpod는 플러터(Flutter)에서 상태 관리를 위한 툴입니다. Riverpod는 Provider 패턴을 기반으로 하여 앱 전역적으로 상태를 관리할 수 있도록 도와줍니다.

2. JWT 토큰이란?

JWT(Json Web Token) 토큰은 인증과 권한 부여를 위해 사용되는 암호화된 문자열입니다. 토큰은 클라이언트와 서버 간의 인증을 위해 사용되며, 클라이언트가 요청을 보낼 때마다 인증 절차를 반복할 필요 없이 토큰을 사용하여 인증합니다.

3. Riverpod와 JWT 토큰 관리 방법

3.1. 상태 관리

Riverpod는 Provider 패턴을 사용하여 상태를 관리합니다. 상태를 관리하기 위해서는 Provider 클래스를 사용하면 됩니다. 일반적으로 사용하는 Provider 클래스는 다음과 같습니다.

final exampleProvider = Provider((ref) => Example());

3.2. JWT 토큰 저장

JWT 토큰을 저장하기 위해서는 shared_preferences 패키지를 사용할 수 있습니다. shared_preferences 패키지는 간단한 키-값 쌍 형태로 데이터를 저장할 수 있는 저장소입니다.

먼저, shared_preferences 패키지를 pubspec.yaml 파일에 추가하여 주세요.

dependencies:
  shared_preferences: ^2.0.5

그리고, 다음과 같이 JWT 토큰을 저장하는 함수를 작성해주세요.

import 'package:shared_preferences/shared_preferences.dart';

Future<void> saveToken(String token) async {
  final prefs = await SharedPreferences.getInstance();
  await prefs.setString('token', token);
}

3.3. JWT 토큰 가져오기

저장된 JWT 토큰을 가져오기 위해서는 다음과 같이 함수를 작성해주세요.

import 'package:shared_preferences/shared_preferences.dart';

Future<String?> getToken() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getString('token');
}

3.4. 로그인 및 로그아웃

로그인 시에는 토큰을 저장하고, 로그아웃 시에는 토큰을 삭제하는 함수를 작성할 수 있습니다.

import 'package:shared_preferences/shared_preferences.dart';

// 로그인
Future<void> login(String token) async {
  await saveToken(token);
  // 필요한 작업 수행
}

// 로그아웃
Future<void> logout() async {
  final prefs = await SharedPreferences.getInstance();
  await prefs.remove('token');
  // 필요한 작업 수행
}

4. 결론

이번 글에서는 Riverpod와 JWT 토큰의 관리 방법에 대해 알아보았습니다. Riverpod를 통해 상태를 관리하고, shared_preferences를 이용하여 JWT 토큰을 저장하고 가져올 수 있습니다.

플러터 앱 개발에서 효율적인 상태 관리와 인증을 위해 Riverpod와 JWT 토큰을 함께 사용해보세요!