[JAVA] Zeigen Sie die Liste in setDetails mit Federsicherheit auf dem Bildschirm an

Zeigen Sie die Eigenschaften der Liste beliebiger Objekte an, die mit `` `UsernamePasswordAuthenticationToken # setDetails``` in Spring-Security mit Thymeleaf festgelegt wurden.

Quellcode

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);
  }
}

Führen Sie vorerst keine Authentifizierung durch, sondern geben Sie die Werte einfach mit "setDetails" ein.

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;
}

Wenn Sie im Standard-Anmeldebildschirm ein entsprechendes ID-Passwort eingeben, wird das folgende HTML angezeigt.

/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>

Wie Sie unter https://github.com/thymeleaf/thymeleaf-extras-springsecurity sehen können, ist # authentication``` das Spring-Security-Authentifizierungsobjekt (hier MyAuthenticationProvider return UsernamePasswordAuthenticationToken) kann verwendet werden. Sie können also eine Liste mit der Eigenschaft `` `hogeList dieser Eigenschaft` `` details``` erhalten. Danach können Sie es mit Thymeleaf foreach verarbeiten.

Referenz-URL

Recommended Posts

Zeigen Sie die Liste in setDetails mit Federsicherheit auf dem Bildschirm an
Füllen Sie den Bildschirm mit Schaltflächen in TableLayout
[Android] Listet alle Einstellungselemente auf dem Einstellungsbildschirm auf
Wechseln Sie den Bildschirm, wenn Sie mit jQuery über eine Registerkarte fahren
[Ruby on Rails] Zeigt den Seitentitel schnell im Browser an
Implementierung einer starken API für "Ich möchte ~~ auf dem Bildschirm anzeigen" mit einfachem CQRS
Zeichnen Sie den Bildschirm mit Thymeleaf in SpringBoot
[Android] Probieren Sie den aus, der den in Spielen üblichen Effekt auf dem berührten Teil des Bildschirms anzeigt
Programmieren mit Ruby (unterwegs)
Mit CSS in die Mitte legen
Zeigen Sie benutzerdefinierte Zeichen auf dem I2C 1602 LCD mit Raspberry Pi 3 und Java an
[Java] Zeigt die Bitfolge an, die in der Bytetypvariablen auf der Konsole gespeichert ist
Setzen Sie Zabbix mit Docker in Ubuntu ein und überwachen Sie Docker auf demselben Host
Zeigen Sie Text über dem Bild an
Schaben mit Puppenspieler in Nuxt auf Docker.
Wie die Website auf dem Bildschirm angezeigt wird
Vorverarbeitung zur Anzeige im Browser (Compiler)
Erstellen wir eine Taschenrechner-App mit Java ~ Erstellen Sie einen Anzeigebereich im Fenster
Wenn der Anmeldebildschirm mit Spring-Security abgelaufen ist, läuft das CSRF-Token ab und die Anmeldung schlägt fehl.
Führen Sie die SSL-Verschlüsselungseinstellungen gemäß den "Richtlinien für TLS-Verschlüsselungseinstellungen" unter CentOS8 durch
In Spring-Security ist die Weiterleitungs-URL meines Anmeldebildschirms falsch und die Anmeldung schlägt fehl.
[No.004] Der Bestelllistenbildschirm des Bestellers wurde korrigiert
Verwenden Sie Vorlagen für den Klassenpfad mit Apache Velocity
Verwenden Sie JDBC Manager mit den Einstellungen in jdbc.dicon.
[Android] Ermittelt die getippte Position (Koordinaten) auf dem Bildschirm
Zeigen Sie das System Monitor-Applet in der Taskleiste von Ubuntu 20.04 an
Veröffentlichen Sie die mit Ruby on Rails erstellte App
Zeigen Sie mit Swing ein Bild vom Typ Mat auf der GUI an
In der Studiensitzung im November 2017 wurde daran gearbeitet
Geben Sie ein Suffix für Methode 2 heraus
Stimmt die Anmerkungen auf der Schnittstelle mit Spring AOP überein
Zeigen Sie "Hello World" im Browser mit Java an
Zeigen Sie "Hello World" im Browser mit Java an
Bestimmen Sie die aktuelle Seite mit Ruby on Rails
Speichern von Dateien mit der angegebenen Erweiterung unter dem in Java angegebenen Verzeichnis in der Liste
Ich möchte RadioButtons an derselben Stelle auf dem Bildschirm in derselben RadioGroup platzieren