[JAVA] Définir des cookies avec Spring Boot

De base

Il vous suffit de définir un bean qui renvoie un ServletContextInitializer.

Écrivez le code suivant dans une classe Application appropriée

Applcation.java




    @Bean
    public ServletContextInitializer servletContextInitializer(@Value("${secure.cookie}")boolean secure) {
        return servletContext -> {
            servletContext.getSessionCookieConfig().setName("hogeSession");
        };
    }

mis à httponly

python



        return servletContext -> {
            servletContext.getSessionCookieConfig().setHttpOnly(true);
        };

Ajouter un attribut sécurisé


        return servletContext -> {
            servletContext.getSessionCookieConfig().setSecure(true);
        }

Cela peut être un obstacle lors du développement local, il peut donc être plus pratique de l'obtenir à partir des propriétés et de le définir sur true dans le paramètre prod.

    @Bean
    public ServletContextInitializer servletContextInitializer(@Value("${secure.cookie}")boolean secure) {
        return servletContext -> {
            servletContext.getSessionCookieConfig().setSecure(true);
        };
    }

Ne donnez pas JSESSIONID à l'URL

Si le cookie n'est pas disponible, il essaiera de gérer la session avec l'URL, ce qui doit être évité. Même si le cookie peut être utilisé, l'ID JESSION ne sera donné à l'URL que pour le premier accès. Puisque Spring Boot utilise Servlet 3.0, vous ne pouvez vous limiter aux cookies qu'en définissant le mode de suivi de session.



        return servletContext -> {
            servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE);
        };

Ceci est synonyme des paramètres suivants dans web.xml.



<session-config>
  <tracking-mode>COOKIE</tracking-mode>
</session-config>

Résumé

Si vous les configurez ensemble, cela ressemblera à ceci



    @Bean
    public ServletContextInitializer servletContextInitializer(@Value("${secure.cookie}")boolean secure) {

        ServletContextInitializer servletContextInitializer = new ServletContextInitializer() {
            @Override
            public void onStartup(ServletContext servletContext) throws ServletException {
                servletContext.getSessionCookieConfig().setHttpOnly(true);
                servletContext.getSessionCookieConfig().setSecure(secure);
                servletContext.setSessionTrackingModes(
                        Collections.singleton(SessionTrackingMode.COOKIE)
                );
            }
        };
        return servletContextInitializer;
    }

référence https://www.glamenv-septzen.net/view/1093

Recommended Posts

Définir des cookies avec Spring Boot
Télécharger avec Spring Boot
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Hello World avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
Créez une application avec Spring Boot 2
Liaison de base de données avec doma2 (Spring boot)
Comment configurer Spring Boot + PostgreSQL
Programmation Spring Boot avec VS Code
Jusqu'à "Hello World" avec Spring Boot
Obtenez des résultats de validation avec Spring Boot
(Intellij) Hello World avec Spring Boot
Créez une application avec Spring Boot
Google Cloud Platform avec Spring Boot 2.0.0
J'ai essayé GraphQL avec Spring Boot
[Java] Intégration LINE avec Spring Boot
À partir de Spring Boot 0. Utilisez Spring CLI
J'ai essayé Flyway avec Spring Boot
La coopération des messages a commencé avec Spring Boot
Traitement lors du démarrage d'une application avec Spring Boot
Définir le profil Spring lors de l'exécution de la tâche bootRun avec Spring Boot Gradle Plugin
Hello World avec Eclipse + Spring Boot + Maven
Envoyez des notifications régulières avec LineNotify + Spring Boot
Effectuer un test de confirmation de transaction avec Spring Boot
Essayez d'utiliser Spring Boot avec VS Code
Démarrez le développement d'applications Web avec Spring Boot
Lancez l'application Nginx + Spring Boot avec docker-compose
Forme de botte de printemps
Implémenter CRUD avec Spring Boot + Thymeleaf + MySQL
Traitement asynchrone avec Spring Boot en utilisant @Async
Implémenter la fonction de pagination avec Spring Boot + Thymeleaf
Spring Boot Rappelez-vous
gae + botte à ressort
(IntelliJ + gradle) Hello World avec Spring Boot
Utiliser le cache avec EhCashe 2.x avec Spring Boot
Test de validation de classe de formulaire avec Spring Boot
Exécutez l'application WEB avec Spring Boot + Thymeleaf
Obtenez une authentification BASIC avec Spring Boot + Spring Security
Créez un site Web avec Spring Boot + Gradle (jdk1.8.x)
Configurer l'application Spring Boot avec le module multiple maven
Testez le contrôleur avec Mock MVC dans Spring Boot
Traitement asynchrone avec exécution régulière dans Spring Boot
Jusqu'à l'acquisition de données avec Spring Boot + MyBatis + PostgreSQL
Créez une application de recherche simple avec Spring Boot
Hash des mots de passe avec Spring Boot + Spring Security (avec sel, avec étirement)
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Exécutez l'application Scala avec Spring Boot via Gradle