[flutter] 플러터 GET 요청에 사용자 세션을 유지하는 방법은 무엇인가요?
플러터 앱에서 GET 요청을 보낼 때, 사용자의 세션을 유지하기 위한 몇 가지 방법이 있습니다. 세션을 유지하기 위해서는 사용자의 인증 상태를 추적하고, 각 요청에 사용자의 세션 토큰을 포함시켜야 합니다.
-
Shared Preferences: Shared Preferences는 앱 내에서 키-값 쌍을 로컬로 저장하는 기능을 제공합니다. 사용자의 로그인 상태를 저장할 수 있고, GET 요청을 보낼 때마다 해당 토큰을 함께 전송할 수 있습니다. 이를 통해 서버는 사용자가 로그인한 상태인지 확인할 수 있습니다.
// 로그인 상태 저장 SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setBool('isLoggedIn', true); prefs.setString('sessionToken', 'user_session_token'); // GET 요청 시 세션 토큰 전송 SharedPreferences prefs = await SharedPreferences.getInstance(); bool isLoggedIn = prefs.getBool('isLoggedIn'); String sessionToken = prefs.getString('sessionToken'); // GET 요청 코드에 sessionToken을 포함하여 요청을 보냄
-
CookieManager 패키지:
cookie_jar
패키지를 사용하여 GET 요청에 쿠키를 추가할 수 있습니다. 서버는 클라이언트가 전송한 쿠키를 사용하여 사용자의 세션 상태를 확인할 수 있습니다.// GET 요청에 쿠키 추가 import 'package:cookie_jar/cookie_jar.dart'; import 'package:http/http.dart' as http; CookieJar cookieJar = CookieJar(); HttpClient httpClient = HttpClient(cookieJar); // 로그인 요청 시 서버에서 반환하는 쿠키를 저장 http.Response response = await http.get('login_url'); List<Cookie> cookies = cookieJar.loadForRequest(Uri.parse('login_url')); // GET 요청 시 저장된 쿠키를 함께 전송 List<Cookie> cookies = cookieJar.loadForRequest(Uri.parse('api_url')); http.Response response = await http.get('api_url', headers: { 'Cookie': cookies.map((cookie) => '${cookie.name}=${cookie.value}').join(';') });
-
JWT(Json Web Token): JWT는 클라이언트와 서버 간에 안전하게 정보를 전송하기 위한 토큰입니다. 로그인 시 서버로부터 제공받은 JWT를 클라이언트에 저장하고, GET 요청 시에는 해당 토큰을 헤더에 포함시켜 요청을 보냅니다.
// JWT 토큰 저장 SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setString('jwtToken', 'user_jwt_token'); // GET 요청 시 JWT 토큰 전송 SharedPreferences prefs = await SharedPreferences.getInstance(); String jwtToken = prefs.getString('jwtToken'); // GET 요청 코드에 Authorization 헤더에 토큰을 포함하여 요청을 보냄
다음과 같이 플러터 앱에서 사용자 세션을 유지할 수 있습니다. 위의 방법 중 하나를 선택하여 사용자의 인증 상태를 추적하고, GET 요청에 해당 정보를 포함시킴으로써 세션을 유지할 수 있습니다.