Uwierzytelnianie użytkowników w pamięci
Zaimplementują Państwo podstawowe uwierzytelnianie z użyciem przechowywanych w pamięci danych użytkowników, konfigurując bezpośrednio nazwy użytkowników, hasła i role.
Uwierzytelnianie użytkowników w pamięci to bezpłatna lekcja Spring Security 6 & JWT Authentication na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Spring Security 6 & JWT Authentication, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Spring Security 6 & JWT Authentication zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
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.
Często zadawane pytania
Czy lekcja „Uwierzytelnianie użytkowników w pamięci” jest bezpłatna?
Tak — pełny tekst „Uwierzytelnianie użytkowników w pamięci” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Spring Security 6 & JWT Authentication, przejdź na CoddyKit PRO. Kurs Spring Security 6 & JWT Authentication zawiera 4 lekcji w sumie.
Co nauczysz się w „Uwierzytelnianie użytkowników w pamięci”?
Zaimplementują Państwo podstawowe uwierzytelnianie z użyciem przechowywanych w pamięci danych użytkowników, konfigurując bezpośrednio nazwy użytkowników, hasła i role. Ćwiczysz Spring Security 6 & JWT Authentication z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Spring Security 6 & JWT Authentication?
Nie wymagamy żadnego doświadczenia. Spring Security 6 & JWT Authentication w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Uwierzytelnianie użytkowników w pamięci”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Spring Security 6 & JWT Authentication?
Tak. Każda lekcja Spring Security 6 & JWT Authentication zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wprowadzenie do Spring Security 6
- Konfiguracja projektu i zależności
- Uwierzytelnianie użytkowników w pamięci
- Zrozumienie łańcucha filtrów Spring Security