Spring Security 6 och JWT-autentisering · Lektion

Rollbaserad auktorisering med beviljade behörigheter

Efter att ha autentiserat användare från en databas lär Ni Er att auktorisera dem med roller och behörigheter samt skydda endpoints och metoder i Spring Security.

Lektion 4 av 413 steg

Rollbaserad auktorisering med beviljade behörigheter är en gratis lektion i Spring Security 6 och JWT-autentisering på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Spring Security 6 och JWT-autentisering, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Spring Security 6 och JWT-autentisering innehåller totalt 4 lektioner.

Autentisering kontra auktorisering

Ni kan nu läsa in användare från en databas och verifiera lösenord. Det är autentisering (vem ni är). Nästa fråga är auktorisering (vad ni får göra), vilket styrs av roller och behörigheter.

Behörigheter och roller

Spring representerar behörigheter som GrantedAuthority-objekt. En roll är helt enkelt en behörighet med prefixet ROLE_, till exempel ROLE_ADMIN.

Tilldela behörigheter till en användare

När ni skapar er UserDetails kopplar ni de behörigheter som användaren har.

User.withUsername('alice')
    .password(encoded)
    .roles('ADMIN', 'USER')
    .build();

Skydda URL:er efter roll

I filterkedjan begränsar ni sökvägar med hasRole. Spring lägger till prefixet ROLE_ åt er här.

http.authorizeHttpRequests(a -> a
    .requestMatchers('/admin/**').hasRole('ADMIN')
    .anyRequest().authenticated());

Kräv specifika behörigheter

Använd hasAuthority för mer detaljerad kontroll. Den matchar behörighetssträngen exakt utan att lägga till något prefix.

http.authorizeHttpRequests(a -> a
    .requestMatchers('/reports/**').hasAuthority('REPORT_READ'));

Flera tillåtna roller

hasAnyRole tillåter åtkomst om användaren har minst en av flera roller.

http.authorizeHttpRequests(a -> a
    .requestMatchers('/staff/**').hasAnyRole('ADMIN', 'MANAGER'));

Säkerhet på metodnivå

Aktivera annoteringsbaserad säkerhet för att skydda servicemetoder, inte bara URL:er.

@EnableMethodSecurity
@Configuration
public class SecurityConfig { }

Använda @PreAuthorize

@PreAuthorize kör ett SpEL-uttryck innan metoden körs och blockerar obehöriga anropare.

@PreAuthorize("hasRole('ADMIN')")
public void deleteUser(Long id) { }

Kontrollera den aktuella användaren

SpEL kan referera till den autentiserade principalen, till exempel för att tillåta användare att endast redigera sina egna data.

@PreAuthorize("#username == authentication.name")
public void updateProfile(String username) { }

Mappa databasroller till behörigheter

I er UserDetailsService omvandlar ni rollrader från databasen till SimpleGrantedAuthority-objekt så att auktoriseringsreglerna tillämpas.

var auths = roles.stream()
    .map(r -> new SimpleGrantedAuthority('ROLE_' + r))
    .toList();

Sätt ihop helheten

Helheten: autentisera från databasen, mappa roller till behörigheter, skydda URL:er med hasRole/hasAuthority och skydda metoder med @PreAuthorize.

Snabb kontroll

Vad är skillnaden mellan hasRole('ADMIN') och hasAuthority('ADMIN')?

Sammanfattning

Ni kan nu styra vad autentiserade användare får göra:

  • Roller är behörigheter med prefixet ROLE_
  • hasRole/hasAnyRole jämfört med exakt hasAuthority
  • @EnableMethodSecurity + @PreAuthorize för regler på metodnivå
  • Mappa databasroller till SimpleGrantedAuthority i er UserDetailsService
Gratis att börja

Lär dig Java med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Rollbaserad auktorisering med beviljade behörigheter” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Spring Security 6 och JWT-autentisering, inklusive ”Rollbaserad auktorisering med beviljade behörigheter”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Spring Security 6 och JWT-autentisering innehåller totalt 4 lektioner.

Vad lär jag mig i ”Rollbaserad auktorisering med beviljade behörigheter”?

Efter att ha autentiserat användare från en databas lär Ni Er att auktorisera dem med roller och behörigheter samt skydda endpoints och metoder i Spring Security. Ni övar på Spring Security 6 och JWT-autentisering med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Spring Security 6 och JWT-autentisering?

Du behöver inga förkunskaper. Utbildningen i Spring Security 6 och JWT-autentisering på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Rollbaserad auktorisering med beviljade behörigheter”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Spring Security 6 och JWT-autentisering-lektionen?

Ja. Varje Spring Security 6 och JWT-autentisering-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Implementera en anpassad Custom UserDetailsService
  2. Förstå lösenordskodare
  3. Integrera användarhantering med en databas
  4. Rollbaserad auktorisering med beviljade behörigheter
← Tillbaka till Spring Security 6 och JWT-autentisering