[JAVA] Afficher la liste en setDétails à l'écran avec ressort-sécurité

Affichez les propriétés de la liste des objets arbitraires définis avec UsernamePasswordAuthenticationToken # setDetails dans spring-security avec Thymeleaf.

Code source

pom.xml


	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.9.RELEASE</version>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>11</maven.compiler.source>
		<maven.compiler.target>11</maven.compiler.target>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.thymeleaf.extras</groupId>
			<artifactId>thymeleaf-extras-springsecurity5</artifactId>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
	</dependencies>
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;

@SpringBootApplication
public class App {
  public static void main(String[] args) {
    new SpringApplicationBuilder(App.class).web(WebApplicationType.SERVLET).run(args);
  }
}

Pour le moment, n'effectuez aucune authentification, remplissez simplement les valeurs avec `` setDetails ''.

import java.util.Arrays;

import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.stereotype.Component;

@Component
public class MyAuthenticationProvider implements AuthenticationProvider {

  public Authentication authenticate(Authentication arg0) throws AuthenticationException {
    UsernamePasswordAuthenticationToken t = new UsernamePasswordAuthenticationToken("kagami", "hoge");
    MyDetail d = new MyDetail();
    d.hogeValue = "hoge";
    d.hogeList = Arrays.asList("aaa", "bbb", "ccc");
    t.setDetails(d);
    return t;
  }

  public boolean supports(Class<?> arg0) {
    return true;
  }
}

import java.util.List;

import lombok.Data;

@Data
public class MyDetail {
  String hogeValue;
  List<String> hogeList;
}

Si vous entrez un mot de passe id approprié sur l'écran de connexion par défaut, le code HTML suivant s'affichera.

/springsecsample/src/main/resouces/templates/index.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
	xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<body>
	<div th:text="${#authentication.details.hogeValue}"></div>
	<table>
		<tr th:each="hoge : ${#authentication.details.hogeList}">
			<td th:text="${hoge}"></td>
		</tr>
	</table>
</body>
</html>

Comme vous pouvez le voir sur https://github.com/thymeleaf/thymeleaf-extras-springsecurity, # authentication est l'objet d'authentification spring-security (ici `` MyAuthenticationProvider renvoie ` UsernamePasswordAuthenticationToken '') peut être pris. Vous pouvez donc obtenir une liste avec la propriété hogeList``` de cette propriété `` `details```. Après cela, vous pouvez le traiter avec Thymeleaf foreach.

URL de référence

Recommended Posts

Afficher la liste en setDétails à l'écran avec ressort-sécurité
Remplissez l'écran avec des boutons dans TableLayout
[Android] Liste tous les éléments de réglage sur l'écran de réglage
Changez l'écran d'affichage lorsque vous passez la souris sur un onglet avec jQuery
[Ruby on Rails] Afficher rapidement le titre de la page dans le navigateur
Implémentation d'une API forte pour "Je veux afficher ~~ à l'écran" avec un simple CQRS
Dessiner un écran avec Thymeleaf dans SpringBoot
[Android] Essayez celui qui affiche l'effet sur la partie touchée de l'écran qui est courant dans les jeux
Programmation avec ruby (en route)
Placer au milieu avec css
Afficher les caractères définis par l'utilisateur sur l'écran LCD I2C 1602 avec Raspberry Pi 3 et Java
[Java] Afficher la chaîne de bits stockée dans la variable de type d'octet sur la console
Mettez Zabbix dans Ubuntu avec Docker et surveillez Docker sur le même hôte
Afficher le texte en haut de l'image
Grattage avec marionnettiste à Nuxt sur Docker.
Comment le site Web s'affiche à l'écran
Pré-traitement à afficher sur le navigateur (compilateur)
Faisons une application de calculatrice avec Java ~ Créez une zone d'affichage dans la fenêtre
Lorsque l'écran de connexion expire avec Spring-Security, le jeton CSRF expire et la connexion échoue.
Définissez les paramètres de cryptage SSL conformément aux «Consignes de configuration de cryptage TLS» sur CentOS8
Dans spring-security, l'URL de redirection de mon écran de connexion est incorrecte et la connexion échoue.
[N ° 004] Correction de l'écran de la liste des commandes du client
Utilisez des modèles sur le chemin de classe avec Apache Velocity
Utilisez JDBC Manager avec les paramètres de jdbc.dicon.
[Android] Obtenez la position tapée (coordonnées) sur l'écran
Afficher l'applet Moniteur système dans la barre des tâches Ubuntu 20.04
Publiez l'application avec ruby on rails
Afficher l'image de type Mat sur l'interface graphique avec Swing
Questions traitées lors de la session d'étude de novembre 2017
Sortez avec un suffixe sur la méthode 2
Correspond aux annotations sur l'interface avec Spring AOP
Afficher "Hello World" dans le navigateur à l'aide de Java
Afficher "Hello World" dans le navigateur à l'aide de Java
Déterminez la page actuelle avec Ruby on Rails
Comment enregistrer des fichiers avec l'extension spécifiée sous le répertoire spécifié en Java dans la liste
Je veux placer RadioButtons dans le même RadioGroup à n'importe quelle position de l'écran