getCSRFToken method

Future<String?> getCSRFToken({
  1. bool forceNew = false,
})

request CSRF token from server

Implementation

Future<String?> getCSRFToken({bool forceNew = false}) async {
  // 1, get from cache first
  if (!forceNew) {
    final cachedToken = await _tokenCache.getCSRFToken();
    if (cachedToken != null && cachedToken.isNotEmpty) {
      return cachedToken;
    }
  }

  // 2, if no cache, fetch from server then cache it
  try {
    final url = apiBaseUrl(_config.domain, _config.authBasePath, 'csrf');

    final response = await _config.httpClient.get(
      url,
      options: HttpClientOptions(contentType: 'application/json'),
    );
    await _cacheCSRFCookieFromHeaders(response);

    return await _tokenCache.getCSRFToken();
  } catch (e) {
    logger?.error('getCSRFToken error', e);
    return null;
  }
}