WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Spring Framework · Guru · question 83 of 100

How can you implement advanced method-level security using Spring Security’s Pre and Post annotations with SpEL expressions?

📕 Buy this interview preparation book: 100 Spring Framework questions & answers — PDF + EPUB for $5

Spring Security’s Pre and Post annotations provide powerful method-level security mechanisms. These annotations are used to enforce access control rules on specific methods in your application code.

To implement advanced method-level security using Pre and Post annotations with SpEL (Spring Expression Language) expressions, follow these steps:

1. Add the Spring Security dependency to your project’s build file.

2. Configure Spring Security by defining a security configuration class that extends WebSecurityConfigurerAdapter. In this class, you can configure method-level security by using the @EnableGlobalMethodSecurity annotation.

For example, the following code snippet enables method-level security with pre- and post-invocation checks:

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class MethodSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // configure HTTP security
    }
}

3. Define access control rules for specific methods using Pre and Post annotations. You can use SpEL expressions in these annotations to specify the conditions under which a method can be invoked.

For example, the following code snippet shows a method-level security rule that allows only authenticated users with the ROLE_ADMIN authority to invoke the method:

@PreAuthorize("hasRole('ROLE_ADMIN') and isAuthenticated()")
public void someSecureMethod() {
    // method implementation
}

4. Use the Spring Expression Language (SpEL) to define more complex conditions that involve method arguments or return values. For example, you can use SpEL to validate method arguments or to restrict method invocation based on the value of a specific property.

For example, the following code snippet shows how to use SpEL to validate the argument of a method:

@PreAuthorize("#param != null and #param.length() > 0")
public void secureMethod(String param) {
    // method implementation
}

In this example, the method is allowed to execute only when the ’param’ variable is not null and has a length greater than 0.

Overall, Spring Security’s Pre and Post annotations with SpEL expressions provide a flexible and powerful method-level security mechanism that allows you to enforce access control rules on specific methods in your application.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Spring Framework interview — then scores it.
📞 Practice Spring Framework — free 15 min
📕 Buy this interview preparation book: 100 Spring Framework questions & answers — PDF + EPUB for $5

All 100 Spring Framework questions · All topics