In this Article explains Spring boot Login and Registration Rest API Project. and how to set the hash password for the login spring boot security example step by step.database we are using Mysql. spring boot rest api log request and response very easy way.spring boot login page we tested through postman tool.
Open the project on the pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> <version>2.7.8</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependencies>
you see the dependencies what you added.
Create the Mysql Database and Configure the database connection in the application.properties. this place where connect to Spring boot to Mysql.
spring.application.name=Registation server.port=8085 spring.jpa.hibernate.ddl-auto=create spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/dbkms?createDatabaseIfNotExist=true spring.datasource.username=root spring.datasource.password=root123 #jpa vendor adapter configuration spring.jpa.database-platform=org.hibernate.dialect.MySQL57Dialect spring.jpa.generate-ddl=true spring.jpa.show-sql=true
Create the Entity Employee for represent the employee data in the database.
package com.example.Registation.Entity; import javax.persistence.*; @Entity @Table(name="employee") public class Employee { @Id @Column(name="employee_id", length = 45) @GeneratedValue(strategy = GenerationType.AUTO) private int employeeid; @Column(name="employee_name", length = 255) private String employeename; @Column(name="email", length = 255) private String email; @Column(name="password", length = 255) private String password; public Employee() { } public Employee(int employeeid, String employeename, String email, String password) { this.employeeid = employeeid; this.employeename = employeename; this.email = email; this.password = password; } //create getters and setters
public class EmployeeDTO { private int employeeid; private String employeename; private String email; private String password; public EmployeeDTO() { } public EmployeeDTO(int employeeid, String employeename, String email, String password) { this.employeeid = employeeid; this.employeename = employeename; this.email = email; this.password = password; } } //create getters and setters
public class LoginDTO { private String email; private String password; public LoginDTO() { } public LoginDTO(String email, String password) { this.email = email; this.password = password; } //create getters and setters
Create a EmployeeRepository interface which extends JpaRepository
package com.example.Registation.Repo; import com.example.Registation.Entity.Employee; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.stereotype.Repository; import java.util.Optional; @EnableJpaRepositories @Repository public interface EmployeeRepo extends JpaRepository<Employee,Integer> { Optional<Employee> findOneByEmailAndPassword(String email, String password); Employee findByEmail(String email); }
Create the Employee Service
package com.example.Registation.Service; import com.example.Registation.Dto.EmployeeDTO; import com.example.Registation.Dto.LoginDTO; import com.example.Registation.payload.response.LoginMesage; public interface EmployeeService { String addEmployee(EmployeeDTO employeeDTO); LoginMesage loginEmployee(LoginDTO loginDTO); }
Create the EmployeeImpl which implements from EmployeeService
package com.example.Registation.Service.impl; import com.example.Registation.Dto.EmployeeDTO; import com.example.Registation.Dto.LoginDTO; import com.example.Registation.Entity.Employee; import com.example.Registation.Repo.EmployeeRepo; import com.example.Registation.Service.EmployeeService; import com.example.Registation.payload.response.LoginMesage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Optional; @Service public class EmployeeIMPL implements EmployeeService { @Autowired private EmployeeRepo employeeRepo; @Autowired private PasswordEncoder passwordEncoder; @Override public String addEmployee(EmployeeDTO employeeDTO) { Employee employee = new Employee( employeeDTO.getEmployeeid(), employeeDTO.getEmployeename(), employeeDTO.getEmail(), this.passwordEncoder.encode(employeeDTO.getPassword()) ); employeeRepo.save(employee); return employee.getEmployeename(); } EmployeeDTO employeeDTO; @Override public LoginMesage loginEmployee(LoginDTO loginDTO) { String msg = ""; Employee employee1 = employeeRepo.findByEmail(loginDTO.getEmail()); if (employee1 != null) { String password = loginDTO.getPassword(); String encodedPassword = employee1.getPassword(); Boolean isPwdRight = passwordEncoder.matches(password, encodedPassword); if (isPwdRight) { Optional<Employee> employee = employeeRepo.findOneByEmailAndPassword(loginDTO.getEmail(), encodedPassword); if (employee.isPresent()) { return new LoginMesage("Login Success", true); } else { return new LoginMesage("Login Failed", false); } } else { return new LoginMesage("password Not Match", false); } }else { return new LoginMesage("Email not exits", false); } } }
Create a EmployeeController to manage the Restful api requests related to employee login and registration.spring boot login example i explained with clear code snippet.
package com.example.RegisterLogin.EmployeeController; import com.example.RegisterLogin.Dto.EmployeeDTO; import com.example.RegisterLogin.Dto.LoginDTO; import com.example.RegisterLogin.Service.EmployeeService; import com.example.RegisterLogin.response.LoginResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @CrossOrigin @RequestMapping("api/v1/employee") public class EmployeeController { @Autowired private EmployeeService employeeService; @PostMapping(path = "/save") public String saveEmployee(@RequestBody EmployeeDTO employeeDTO) { String id = employeeService.addEmployee(employeeDTO); return id; } @PostMapping(path = "/login") public ResponseEntity<?> loginEmployee(@RequestBody LoginDTO loginDTO) { LoginResponse loginResponse = employeeService.loginEmployee(loginDTO); return ResponseEntity.ok(loginResponse); } }
Security measures need to implemented
Create a file SecurityConfig for managing the Security password
package com.example.Registation.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; @Configuration public class SecurityConfig { @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } }
Create LoginResponse Page for displaying Messages while testing
public class LoginMesage { String message; Boolean status; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Boolean getStatus() { return status; } public void setStatus(Boolean status) { this.status = status; } public LoginMesage(String message, Boolean status) { this.message = message; this.status = status; } }
Spring boot react js login and registration example
https://www.tutussfunny.com/login-registration-form-using-spring-boot-react/
Spring boot angular login and registration example
https://www.tutussfunny.com/login-registration-form-using-spring-boot-angular/
Spring boot with Angular Full Stack Project
https://www.tutussfunny.com/spring-boot-with-angular-full-stack-project/
Spring boot with React Full Stack Project
https://www.tutussfunny.com/spring-boot-with-react-full-stack-project/
Spring Boot Ajax jQuery Crud Application
https://www.tutussfunny.com/spring-boot-ajax-crud/
i have attached the video link below. which will do this tutorials step by step rest api with spring boot
This article explain how to make a Inventory Management App in Angular.this app explain the…
Introduction to Java Swing Java Swing is a versatile toolkit for building graphical user interfaces…
Inventory Management App in React.this app explain the complete module of the Inventory sales management system in React…
Introduction to Inventory Management with POS Systems Efficient inventory management is crucial for businesses looking…
In today's fast-paced business environment, an efficient inventory management system is crucial for success. Companies…
Introduction to Java Inventory Management Systems In today's fast-paced business environment, effective inventory management is…