Cover Image for Spring Security Login Logout
143 views

Spring Security Login Logout

Implementing login and logout functionality using Spring Security in a Spring Boot application is a common requirement for securing web applications. Below, I’ll outline the steps to set up a basic login and logout functionality using Spring Security:

1. Create a Spring Boot Project:

If you haven’t already, create a Spring Boot project or use an existing one.

2. Add Spring Security Dependency:

In your project’s pom.xml (if using Maven) or build.gradle (if using Gradle), make sure you have the Spring Security dependency:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

3. Configure Security:

In your project, create a security configuration class that extends WebSecurityConfigurerAdapter to customize security settings. Define authentication and authorization rules, as well as the login and logout URLs.

Here’s an example of a security configuration class:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
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.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll() // Allow access to these paths without authentication
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
            .logout()
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .logoutSuccessUrl("/")
                .permitAll();
    }

    @Bean
    @Override
    public UserDetailsService userDetailsService() {
        UserDetails user = User.withDefaultPasswordEncoder()
            .username("user")
            .password("password")
            .roles("USER")
            .build();

        return new InMemoryUserDetailsManager(user);
    }
}

In the example above:

  • We permit access to the / and /home paths without authentication but require authentication for any other path.
  • We configure a custom login page with .formLogin().loginPage("/login").
  • We specify a custom logout URL using .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).
  • We define a simple in-memory user with the username “user” and password “password” for testing purposes. In a real application, you’d typically use a more robust authentication mechanism.

4. Create Login and Logout Pages (Optional):

You can create custom login and logout pages (e.g., login.html and logout.html) to provide a customized user interface for authentication and logging out. Spring Security will automatically handle authentication and logout requests based on the configured URLs.

5. Test Your Application:

Now, you can run your Spring Boot application and access the login page (e.g., http://localhost:8080/login). You should be able to log in using the credentials you configured and log out by accessing the /logout URL or clicking the logout button (if you created a custom logout page).

This is a basic example of implementing login and logout functionality with Spring Security in a Spring Boot application. Depending on your requirements, you can further customize authentication providers, user stores, and other security features to meet your application’s needs.

YOU MAY ALSO LIKE...

The Tech Thunder

The Tech Thunder

The Tech Thunder


COMMENTS