Skip to main content

Display User ID & Roles

Materi ini akan membahas cara menampilkan informasi pengguna/user yang sedang masuk (logged-in user), seperti Username dan Roles, langsung pada halaman web menggunakan Thymeleaf Extras Spring Security.

Kita perlu melakukan integrasi antara Spring Security dan Thymeleaf.

1️⃣ Persiapan Dependensi​

Untuk mengakses data security di dalam HTML, kita memerlukan library tambahan. Pastikan dependensi berikut ada di file pom.xml anda:

<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity6</artifactId>
</dependency>

2️⃣ Menghubungkan Namespace di HTML​

Agar tag khusus keamanan dapat digunakan, kita harus menambahkan namespace sec pada tag <html> di file View Anda (misalnya home.html):

<html xmlns:th="http://www.thymeleaf.org"
xmlns:sec="www.thymeleaf.org">

3️⃣ Cara Menampilkan User ID (Username) dan Roles (Otoritas)​

  • Untuk menampilkan nama pengguna yang sedang aktif, gunakan atribut sec:authentication="name". Spring Security secara otomatis mengambil informasi ini dari objek UserDetails.
Logged in as: <span sec:authentication="principal.username"></span>

Jika Anda login sebagai "ucup", maka teks akan menjadi "ucup".

  • Menampilkan Role sedikit berbeda karena satu pengguna bisa memiliki banyak Role. Kita bisa menggunakan objek principal.authorities.
Roles: <span sec:authentication="principal.authorities"></span>

Hasilnya akan muncul seperti: [ROLE_GUEST, ROLE_USERS, ROLE_ADMIN].

  • Contoh kode lengkapnya pada home.html:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
<title>Belajar Spring CRUD Security</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h2>TimposuLabs Company</h2>
<hr />
Welcome to our company homepage.
<hr />
<p>
Logged in as: <span sec:authentication="principal.username"></span>
<br>
Roles: <span sec:authentication="principal.authorities"></span>
</p>
<hr />
<form th:action="@{/logout}" method="post">
<button type="submit">Logout</button>
</form>
</body>
</html>
  • Contoh login dengan user yang memiliki role GUEST, USERS, ADMIN:

Spring Security

  • Contoh login dengan user yang hanya memiliki role GUEST:

Spring Security