user login bcrpypt, jakarta2javax

This commit is contained in:
xigmaz
2024-06-07 07:34:16 +09:00
parent 8c9792be95
commit 65988afb96
7 changed files with 88 additions and 18 deletions

View File

@@ -5,7 +5,7 @@ xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.4</version> <version>2.6.12</version>
<relativePath/> <!-- lookup parent from repository --> <relativePath/> <!-- lookup parent from repository -->
</parent> </parent>
<groupId>com.packt</groupId> <groupId>com.packt</groupId>

View File

@@ -19,6 +19,8 @@ public class CardatabaseApplication implements CommandLineRunner {
private CarRepository crepository; private CarRepository crepository;
@Autowired @Autowired
private OwnerRepository orepository; private OwnerRepository orepository;
@Autowired
private UserRepository urepository;
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(CardatabaseApplication.class, args); SpringApplication.run(CardatabaseApplication.class, args);
@@ -40,5 +42,9 @@ public class CardatabaseApplication implements CommandLineRunner {
logger.info(car.getBrand()+" "+car.getModel()); logger.info(car.getBrand()+" "+car.getModel());
} }
urepository.save(new User("user","$2a$10$UmKzJgymyPoSLlG8PDfh0.ovK3F8.nrOHHuuDypuoDECIVuKDHWv6","USER"));
urepository.save(new User("admin","$2a$10$YU2mqUBFCB2mgQVeXQtZEe1alm0znU62Hi2KIG5H19439Ick9Oo9G","ADMIN"));
} }
} }

View File

@@ -1,21 +1,31 @@
package com.packt.cardatabase; package com.packt.cardatabase;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User; //import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails; //import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService; //import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager; //import org.springframework.security.provisioning.InMemoryUserDetailsManager;
//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; //import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
//deprecated //deprecated
import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import com.packt.cardatabase.service.UserDetailsServiceImpl;
@Configuration @Configuration
@EnableWebSecurity @EnableWebSecurity
public class SecurityConfig { public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsServiceImpl userDetailsService;
/*
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@Bean @Bean
public UserDetailsService userDetailsService() { public UserDetailsService userDetailsService() {
@@ -26,5 +36,12 @@ public class SecurityConfig {
.build(); .build();
return new InMemoryUserDetailsManager(user); return new InMemoryUserDetailsManager(user);
} }
*/
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{
auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
}
} }

View File

@@ -1,13 +1,13 @@
package com.packt.cardatabase.domain; package com.packt.cardatabase.domain;
import jakarta.persistence.Entity; import javax.persistence.Entity;
import jakarta.persistence.FetchType; import javax.persistence.FetchType;
import jakarta.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import javax.persistence.GenerationType;
import jakarta.persistence.Id; import javax.persistence.Id;
import jakarta.persistence.Column; import javax.persistence.Column;
import jakarta.persistence.ManyToOne; import javax.persistence.ManyToOne;
import jakarta.persistence.JoinColumn; import javax.persistence.JoinColumn;
@Entity @Entity
public class Car { public class Car {

View File

@@ -1,5 +1,5 @@
package com.packt.cardatabase.domain; package com.packt.cardatabase.domain;
import jakarta.persistence.*; import javax.persistence.*;
import java.util.*; import java.util.*;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

View File

@@ -1,7 +1,7 @@
package com.packt.cardatabase.domain; package com.packt.cardatabase.domain;
import jakarta.persistence.Column; import javax.persistence.Column;
import jakarta.persistence.*; import javax.persistence.*;
@Table(name="`user`") @Table(name="`user`")

View File

@@ -0,0 +1,47 @@
package com.packt.cardatabase.service;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.User.UserBuilder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import com.packt.cardatabase.domain.User;
import com.packt.cardatabase.domain.UserRepository;
@Service
public class UserDetailsServiceImpl implements UserDetailsService{
@Autowired
private UserRepository repository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException{
Optional<User> user = repository.findByUsername(username);
UserBuilder builder = null;
if (user.isPresent()) {
User currentUser = user.get();
builder = org.springframework.security.core.userdetails.User.withUsername(username);
builder.password(currentUser.getPassword());
builder.roles(currentUser.getRole());
}else {
throw new UsernameNotFoundException("User not ffound.");
}
return builder.build();
}
}