Pakete, Repositories und App-Kategorien suchen

Paketdetailsv0.8.0

fresh_graphql

Ein GraphQL-Link für Token-Refresh. Aufbauend auf dem Paket:graphql und verwaltet Authentifizierungstoken transparent.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
3410
Likes
38
Pub-Punkte
160

Paket installieren

flutter pub add fresh_graphql

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Fresh GraphQL ist ein Flutter/Dart-Paket, das die Funktionalität des graphql-Pakets erweitert, indem es einen automatischen Token-Refresh-Mechanismus für GraphQL-Anfragen bereitstellt. Es verarbeitet nahtlos Authentifizierungstoken und stellt sicher, dass diese vor Ablauf der Anfrage aktualisiert werden. Auf dem grundlegenden graphql-Paket aufgebaut, vereinfacht es sichere API-Kommunikation in Apps, die eine dauerhafte Authentifizierung erfordern. Ideal für Anwendungen, die JWT oder ähnliche tokenbasierte Authentifizierungssysteme verwenden.

Anwendungsfälle

  • Sicheren Zugriff auf GraphQL-API mit automatischer Aktualisierung
  • Verwaltung abgelaufener Token ohne Benutzerinteraktion
  • Integration mit JWT-basierter Authentifizierung
  • Verwaltung authentifizierter Sitzungen über App-Neustarts hinweg
  • Vereinfachung der Zustandsverwaltung für Authentifizierungstoken

Hauptmerkmale

  • Automatische Tokenaktualisierung
  • Transparente Integration mit dem graphql-Paket
  • Unterstützung für benutzerdefinierte Token-Aktualisierungslogik
  • Eingebautes Wiederholungsmechanismus für fehlgeschlagene Anfragen
  • Plattformübergreifende Kompatibilität

Geeignet für

  • Apps, die JWT oder OAuth2 verwenden
  • Entwickler, die eine nahtlose Authentifizierung verarbeiten suchen
  • Projekte mit häufigen GraphQL-Aufrufen
  • Teams, die auf Entwicklererfahrung achten
  • Anwendungen, die eine robuste Sitzungsverwaltung erfordern

Hinweise

  • Erforderliche korrekte Einrichtung des Token-Aktualisierungs-Endpunkts
  • Abhängig von der Verfügbarkeit des externen Authentifizierungsdienstes
  • Möglicherweise ist eine Anpassung für nicht-standardmäßige Authentifizierungsflüsse erforderlich
  • Nicht geeignet für stateless APIs ohne Tokens
  • Nur für die Verwendung mit dem graphql-Paket begrenzt

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

Fresh 🍋

build License: MIT GitHub stars


A collection of packages for automatic token refresh in Dart and Flutter. Fresh handles refreshing, caching, and attaching authentication tokens transparently so your API calls just work.

Why Fresh?

Token-based authentication seems simple until you handle the edge cases: tokens expire mid-session, multiple requests fail at the same time triggering duplicate refreshes, refresh tokens get revoked, and you need to route users to login when auth is lost. Fresh handles all of this so you don't have to.

  • No more manual 401 handling scattered across your codebase
  • No more race conditions when concurrent requests trigger simultaneous refreshes
  • No more stale tokens causing request failures - expired tokens are refreshed proactively before the request is even sent

Packages

Package Pub
fresh pub package
fresh_dio pub package
fresh_graphql pub package
fresh_http pub package

Features

  • Automatic token refresh on 401 / auth errors, with automatic request retry
  • Proactive refresh before requests when the token is expired
  • Single-flight refresh - concurrent requests share one refresh call instead of triggering multiple
  • authenticationStatus stream for reacting to login/logout events
  • Pluggable TokenStorage - bring your own persistence layer
  • Built-in OAuth2Token with expiresAt support

Usage

fresh_dio
final dio = Dio();

dio.interceptors.add(
  Fresh.oAuth2(
    tokenStorage: InMemoryTokenStorage<OAuth2Token>(),
    refreshToken: (token, client) async {
      final response = await client.post(
        'https://api.example.com/auth/refresh',
        data: {'refresh_token': token?.refreshToken},
      );
      return OAuth2Token(
        accessToken: response.data['access_token'],
        refreshToken: response.data['refresh_token'],
      );
    },
  ),
);

See the fresh_dio README for full documentation.

fresh_graphql
import 'dart:convert';

final freshLink = FreshLink.oAuth2(
  tokenStorage: InMemoryTokenStorage<OAuth2Token>(),
  refreshToken: (token, client) async {
    final response = await client.post(
      Uri.parse('https://api.example.com/auth/refresh'),
      body: jsonEncode({'refresh_token': token?.refreshToken}),
    );
    final body = jsonDecode(response.body) as Map<String, dynamic>;
    return OAuth2Token(
      accessToken: body['access_token'],
      refreshToken: body['refresh_token'],
    );
  },
  shouldRefresh: (response) =>
      response.errors?.any((e) => e.message.contains('UNAUTHENTICATED')) ?? false,
);

// HttpLink comes from package:gql_http_link
final link = Link.from([freshLink, HttpLink('https://api.example.com/graphql')]);

See the fresh_graphql README for full documentation.

fresh_http
import 'dart:convert';

final client = Fresh.oAuth2(
  tokenStorage: InMemoryTokenStorage<OAuth2Token>(),
  refreshToken: (token, client) async {
    final response = await client.post(
      Uri.parse('https://api.example.com/auth/refresh'),
      body: jsonEncode({'refresh_token': token?.refreshToken}),
    );
    final body = jsonDecode(response.body) as Map<String, dynamic>;
    return OAuth2Token(
      accessToken: body['access_token'],
      refreshToken: body['refresh_token'],
    );
  },
);

See the fresh_http README for full documentation.

Kategorien

Abhängigkeiten

Abhängigkeiten 4 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.