Step-by-Step Guide to Create Login and
Signup Modules in Spring Boot with
MongoDB
1. Project Setup
Link: https://start.spring.io/
Create a Spring Boot project using Spring Initializr or Intellij Idea Paid Version with
dependencies:
- Spring Web
- Spring Security
- Spring Data MongoDB
- jjwt (for JWT token authentication).
2. Package Structure
Organize your code with the following structure:
- config
- controller
- dto
- model
- repository
- service
- security
3. Add Dependencies in pom.xml
Ensure `pom.xml` contains:
- spring-boot-starter-web
- spring-boot-starter-security
- spring-boot-starter-data-mongodb
- jjwt-api, jjwt-impl, jjwt-jackson
- spring-boot-starter-validation
4. Configure application.properties
Add MongoDB connection details:
```
server.port=8080
# MongoDB Connection
spring.data.mongodb.uri=mongodb+srv://shyamsundar41550:[email protected].
mongodb.net/?retryWrites=true&w=majority&appName=Cluster0
spring.data.mongodb.database=login_db
5. Create Repository
Create `UserRepository` extending `MongoRepository<User, String>`.
Include methods like this,
Optional<User> findByUsername(String username);
boolean existsByUsername(String username);
}
6. Configure Password Encoder
Create a `@Bean` in `SecurityConfig` to return `PasswordEncoder` using
`BCryptPasswordEncoder`.
7. Implement JWT Utilities
- Generate JWT token on login.
- Validate token on protected requests.
- Create JwtUtil and JwtFilter classes.
8. Create Controllers and save it in MongoDB
Create `AuthController`:
- `@PostMapping("/api/auth/signup")` for registration and save the user
- `@PostMapping("/api/auth/login")` for login and authenticate with mongodb
- Return token on success
09. Configure Spring Security
- Allow `/api/auth/**` URLs to be accessed publicly
- Use `JwtAuthenticationFilter` for secured requests
- Disable CSRF, use stateless session management
10. Test the Application
Using Postman:
- POST to `/api/auth/signup` with name, email, password
- POST to `/api/auth/login` with email, password
- Use returned JWT in `Authorization: Bearer <token>` header to access secure APIs
Output from springBoot Tomcat Server :