Conserver l'authentification lors du rechargement de Swagger

Publié le 01/04/2021  API Platform

Dans Swagger, une fois authentifié, si on recharge la page (avec F5 par exemple), l'authentification est perdue. Il est donc nécessaire de redemander un Token JWT, de re-cliquer sur "Authorize" et de le réactiver.

Il est possible de demander à Swagger de conserver l'authentification, même en cas de rechargement de la page.
Il y a un patch qui arrive et qui permettra de le faire proprement dans Symfony : https://github.com/api-platform/core/pull/3731

En attendant, il faut modifier le fichier public/bundles/apiplatform/init-swagger-ui.js, dans la section SwaggerUIBundle, et d'ajouter
persistAuthorization: true,

Voici le bloc concerné :
const ui = SwaggerUIBundle({
        spec: data.spec,
        dom_id: '#swagger-ui',
        validatorUrl: null,
        oauth2RedirectUrl: data.oauth.redirectUrl,
        presets: [
            SwaggerUIBundle.presets.apis,
            SwaggerUIStandalonePreset,
        ],
        plugins: [
            SwaggerUIBundle.plugins.DownloadUrl,
        ],
        layout: 'StandaloneLayout',
        persistAuthorization: true,     // <---- ICI
    });