BAEL-3972: Move code examples to new package
This commit is contained in:
parent
0690a9deae
commit
9770eda888
@ -8,6 +8,7 @@ This module contains articles about core Spring Security
|
|||||||
- [Introduction to Spring Method Security](https://www.baeldung.com/spring-security-method-security)
|
- [Introduction to Spring Method Security](https://www.baeldung.com/spring-security-method-security)
|
||||||
- [Overview and Need for DelegatingFilterProxy in Spring](https://www.baeldung.com/spring-delegating-filter-proxy)
|
- [Overview and Need for DelegatingFilterProxy in Spring](https://www.baeldung.com/spring-delegating-filter-proxy)
|
||||||
- [Deny Access on Missing @PreAuthorize to Spring Controller Methods](https://www.baeldung.com/spring-deny-access)
|
- [Deny Access on Missing @PreAuthorize to Spring Controller Methods](https://www.baeldung.com/spring-deny-access)
|
||||||
|
- [Spring Security: Check If a User Has a Role in Java](https://www.baeldung.com/spring-security-check-user-role)
|
||||||
|
|
||||||
### Build the Project
|
### Build the Project
|
||||||
|
|
||||||
|
@ -42,62 +42,4 @@ public class TaskController {
|
|||||||
|
|
||||||
return ResponseEntity.ok().body(tasks);
|
return ResponseEntity.ok().body(tasks);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Example of restricting specific endpoints to specific roles using @PreAuthorize.
|
|
||||||
*/
|
|
||||||
@GetMapping("/manager")
|
|
||||||
@PreAuthorize("hasRole('ROLE_MANAGER')")
|
|
||||||
public ResponseEntity<Iterable<Task>> getAlManagerTasks() {
|
|
||||||
Iterable<Task> tasks = taskService.findAll();
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(tasks);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Example of restricting specific endpoints to specific roles using SecurityContext.
|
|
||||||
*/
|
|
||||||
@GetMapping("/actuator")
|
|
||||||
public ResponseEntity<Iterable<Task>> getAlActuatorTasks() {
|
|
||||||
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
|
|
||||||
if (auth != null && auth.getAuthorities().stream().anyMatch(a -> a.getAuthority().equals("ACTUATOR")))
|
|
||||||
{
|
|
||||||
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
Iterable<Task> tasks = taskService.findAll();
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(tasks);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Example of restricting specific endpoints to specific roles using UserDetailsService.
|
|
||||||
*/
|
|
||||||
@GetMapping("/admin")
|
|
||||||
public ResponseEntity<Iterable<Task>> getAlAdminTasks() {
|
|
||||||
if(userDetailsService != null) {
|
|
||||||
UserDetails details = userDetailsService.loadUserByUsername("pam");
|
|
||||||
if (details != null && details.getAuthorities().stream().anyMatch(a -> a.getAuthority().equals("ADMIN"))) {
|
|
||||||
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Iterable<Task> tasks = taskService.findAll();
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(tasks);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Example of restricting specific endpoints to specific roles using HttpServletRequest.
|
|
||||||
*/
|
|
||||||
@GetMapping("/admin2")
|
|
||||||
public ResponseEntity<Iterable<Task>> getAlAdminTasksUsingServlet(HttpServletRequest request) {
|
|
||||||
if (!request.isUserInRole("ROLE_ADMIN")) {
|
|
||||||
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
Iterable<Task> tasks = taskService.findAll();
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(tasks);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.baeldung.checkrolejava;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class App {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(com.baeldung.app.App.class, args);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package com.baeldung.checkrolejava;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||||
|
|
||||||
|
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
|
||||||
|
public class UnauthorizedException extends RuntimeException {
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package com.baeldung.checkrolejava;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.security.core.Authentication;
|
||||||
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class UserController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserDetailsService userDetailsService;
|
||||||
|
|
||||||
|
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
|
@GetMapping("/user/{id}")
|
||||||
|
public String getUser(@PathVariable("id") String id) {
|
||||||
|
return "user";
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("hasAnyRole('ROLE_ADMIN','ROLE_MANAGER')")
|
||||||
|
@GetMapping("/users")
|
||||||
|
public String getUsers() {
|
||||||
|
return "users";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("v2/user/{id}")
|
||||||
|
public String getUserUsingSecurityContext() {
|
||||||
|
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
|
||||||
|
if (auth != null && auth.getAuthorities().stream().anyMatch(a -> a.getAuthority().equals("ADMIN"))) {
|
||||||
|
return "user";
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new UnauthorizedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("v2/users")
|
||||||
|
public String getUsersUsingDetailsService() {
|
||||||
|
UserDetails details = userDetailsService.loadUserByUsername("mike");
|
||||||
|
if (details != null && details.getAuthorities().stream()
|
||||||
|
.anyMatch(a -> a.getAuthority().equals("ADMIN"))) {
|
||||||
|
return "users";
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new UnauthorizedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("v3/users")
|
||||||
|
public String getUsers(HttpServletRequest request) {
|
||||||
|
if (request.isUserInRole("ROLE_ADMIN")) {
|
||||||
|
return "users";
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new UnauthorizedException();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user