0Pricing
Spring Security 6 & JWT Authentication · Lezione

Autenticazione degli utenti in memoria

Implementi l’autenticazione di base usando dettagli utente in memoria, configurando direttamente nomi utente, password e ruoli.

Autenticazione degli utenti in memoria è una lezione Spring Security 6 & JWT Authentication gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Spring Security 6 & JWT Authentication, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Spring Security 6 & JWT Authentication include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

Welcome to In-Memory Auth

The fastest way to add real users: in-memory authentication. You define accounts straight in code — perfect for tests and tiny apps.

Why In-Memory Authentication?

In-memory authentication shines for prototyping, learning, and small apps where you don't need users persisted to a database.

Core: UserDetailsService

The UserDetailsService interface is the core of authentication — its job is to load user data. In-memory mode loads it from accounts you define in code.

Meet UserDetails

UserDetailsService returns a UserDetails object holding the username, an always-encoded password, and the authorities that define what the user can access.

Defining a User with Builder

Use User.builder() to create a UserDetails: set the username, an encoded password, and roles. The code shows a minimal user.

import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

public class UserBuilderDemo {
    public static void main(String[] args) {
        // A PasswordEncoder is essential for security
        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

        UserDetails user = User.builder()
            .username("alice")
            .password(passwordEncoder.encode("secret")) // Encode the password!
            .roles("USER") // Short for ROLE_USER
            .build();

        System.out.println("Username: " + user.getUsername());
        System.out.println("Password (encoded): " + user.getPassword());
        System.out.println("Authorities: " + user.getAuthorities());
    }
}

The InMemoryUserDetailsManager

The InMemoryUserDetailsManager is the default UserDetailsService for in-memory auth, storing your UserDetails in a simple map. Pass users to its constructor.

import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

public class InMemoryManagerDemo {
    public static void main(String[] args) {
        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

        UserDetails user1 = User.builder()
            .username("bob")
            .password(passwordEncoder.encode("pass123"))
            .roles("USER")
            .build();

        UserDetails admin = User.builder()
            .username("admin")
            .password(passwordEncoder.encode("adminpass"))
            .roles("ADMIN", "USER") // Multiple roles
            .build();

        // Create the manager with our users
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(user1, admin);

        // Try to load a user
        System.out.println("Loaded user: " + manager.loadUserByUsername("bob").getUsername());
        System.out.println("Loaded admin: " + manager.loadUserByUsername("admin").getUsername());
    }
}

Configuring the Manager Bean

In Boot, expose the InMemoryUserDetailsManager as a @Bean and Spring picks it up automatically. Just remember to also provide a PasswordEncoder bean.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

@Configuration
public class SimpleSecurityConfig {

    @Bean
    public UserDetailsService inMemoryUsers(PasswordEncoder passwordEncoder) {
        UserDetails user = User.builder()
            .username("tester")
            .password(passwordEncoder.encode("testpass"))
            .roles("VIEWER")
            .build();
        return new InMemoryUserDetailsManager(user);
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    // Other HttpSecurity configurations would go here...
}

Roles vs. Authorities

Use roles and Spring auto-prefixes them with ROLE_ (USER becomes ROLE_USER). For fine-grained permissions, .authorities() takes the full string as-is.

Multiple Users and Roles

Add as many in-memory users as you need, each with different roles, to test access-control scenarios — just pass more UserDetails to the manager.

Quick Check

You've learned how to set up users in memory. Which Spring Security component is specifically used to manage and retrieve these in-memory user details?

Recap: In-Memory Auth

Recap: in-memory authentication lets you define users via User.builder(), store them in InMemoryUserDetailsManager, encode passwords, and assign roles.

Domande Frequenti

La lezione «Autenticazione degli utenti in memoria» è gratuita?

Sì — il testo completo di «Autenticazione degli utenti in memoria» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Spring Security 6 & JWT Authentication, passa a CoddyKit PRO. Il corso Spring Security 6 & JWT Authentication include 4 lezioni in totale.

Cosa imparerò in «Autenticazione degli utenti in memoria»?

Implementi l’autenticazione di base usando dettagli utente in memoria, configurando direttamente nomi utente, password e ruoli. Eserciti Spring Security 6 & JWT Authentication con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Spring Security 6 & JWT Authentication?

Non è richiesta alcuna esperienza precedente. Spring Security 6 & JWT Authentication su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Autenticazione degli utenti in memoria»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Spring Security 6 & JWT Authentication?

Sì. Ogni lezione Spring Security 6 & JWT Authentication include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Introduzione a Spring Security 6
  2. Configurazione del progetto e dipendenze
  3. Autenticazione degli utenti in memoria
  4. Comprendere la catena di filtri di Spring Security
← Torna a Spring Security 6 & JWT Authentication