Pour mettre en place la base de données, il faut créer une instance MySQL sur RDS AWS. Ensuite, tout est expliqué ici pour mettre en place la connexion dans l'application Spring.
Pour trouver l'URL de connexion à mettre dans application.properties
, il faut
aller dans le menu "Instances" une fois dans le tableau de bord RDS, ensuite
cliquer sur l'instance à utiliser et descendre jusqu'à la section "Connexion".
L'addresse à utiliser est sous le titre "Point de terminaison".
Le fichier doit avoir une tête de se genre là :
spring.jpa.hibernate.ddl-auto=create spring.datasource.url=jdbc:mysql://[ADRESSE AMAZON]:3306/[BDD] spring.datasource.username=mouloud spring.datasource.password=s3cr3t
Attention : Il faut utiliser la même version de MySQL entre l'instance AWS et celle que vous avez sur votre PC.
Attention : Pour ceux qui sont sous Linux ou macOS avec Homebrew,
possible que les paquets MySQL n'installent pas MySQL mais MariaDB. Il faut taper
mysql --version
dans un terminal, la sortie aura cette gueule là si
c'est du MariaDB :
mysql Ver 15.1 Distrib 10.2.13-MariaDB, for osx10.13 (x86_64) using readline 5.1
Les compatibilités entre les versions MySQL pour MariaDB :
Le gros problème c'est que si l'instance AWS et le client sont pas compatibles,
le message d'erreur est pas du tout explicite (i.e. ACCESS DENIED ...
).
Pour la partie connexion/authentification, il faut utiliser le composant security de Spring apparemment. Le guide pour savoir comment l'utiliser est ici.
Petit truc en plus, avec la configuration qui est donnée dans le guide, il n'y
a pas moyen d'accéder aux URLs avec un verbe HTTP POST
. Du coup, pour palier
à ce problème, il faut changer la configuration dans la classe WebSecurityConfig
en rajoutant la ligne surlignée :
@Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .authorizeRequests() .antMatchers("/", "/home").permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .permitAll() .and() .logout() .permitAll(); }
Dans une méthode de contrôleur, le retour de la méthode détermine ce que Spring va faire une fois l'action terminée. Par exemple :
@GetMapping("/prout") public String prout() { return "prout/template"; }
Accéder à l'URL /prout
, va rendre la vue template
contenue dans le dossier prout
.
Pour faire une redirection :
@GetMapping("/prout") public String prout() { return "redirect:/"; }
Accéder à l'URL /prout
va rediriger vers la page d'accueil du site.