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.
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/hasAnyRolejämfört med exakthasAuthority@EnableMethodSecurity+@PreAuthorizeför regler på metodnivå- Mappa databasroller till
SimpleGrantedAuthorityi er UserDetailsService
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
- Implementera en anpassad Custom UserDetailsService
- Förstå lösenordskodare
- Integrera användarhantering med en databas
- Rollbaserad auktorisering med beviljade behörigheter