From 5c9e366bab9c1d45fb0e3df282489bff9c15a6ad Mon Sep 17 00:00:00 2001 From: PhuocNTB Date: Tue, 2 Jun 2026 20:35:09 +0700 Subject: [PATCH] add --- .../config/SecurityConfig.java | 7 +++ .../example/server_site_api/models/Users.java | 1 + .../repositories/UserRepository.java | 2 + .../servies/AuthenticationProviderCus.java | 49 +++++++++++++++++++ .../servies/CustomUserDetialService.java | 26 ---------- 5 files changed, 59 insertions(+), 26 deletions(-) create mode 100644 src/main/java/com/example/server_site_api/servies/AuthenticationProviderCus.java delete mode 100644 src/main/java/com/example/server_site_api/servies/CustomUserDetialService.java diff --git a/src/main/java/com/example/server_site_api/config/SecurityConfig.java b/src/main/java/com/example/server_site_api/config/SecurityConfig.java index 33239d6..53a2920 100644 --- a/src/main/java/com/example/server_site_api/config/SecurityConfig.java +++ b/src/main/java/com/example/server_site_api/config/SecurityConfig.java @@ -1,5 +1,7 @@ package com.example.server_site_api.config; +import com.example.server_site_api.servies.AuthenticationProviderCus; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; @@ -13,6 +15,9 @@ import org.springframework.security.web.SecurityFilterChain; @EnableWebSecurity public class SecurityConfig { + @Autowired + AuthenticationProviderCus authenticationProviderCus; + @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { @@ -29,6 +34,8 @@ public class SecurityConfig { ) .httpBasic(Customizer.withDefaults()); + http.authenticationProvider(authenticationProviderCus); + return http.build(); } } diff --git a/src/main/java/com/example/server_site_api/models/Users.java b/src/main/java/com/example/server_site_api/models/Users.java index 0812412..824d072 100644 --- a/src/main/java/com/example/server_site_api/models/Users.java +++ b/src/main/java/com/example/server_site_api/models/Users.java @@ -12,6 +12,7 @@ public class Users { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + private String username; private String password; diff --git a/src/main/java/com/example/server_site_api/repositories/UserRepository.java b/src/main/java/com/example/server_site_api/repositories/UserRepository.java index 00ec8dc..18f1d41 100644 --- a/src/main/java/com/example/server_site_api/repositories/UserRepository.java +++ b/src/main/java/com/example/server_site_api/repositories/UserRepository.java @@ -6,4 +6,6 @@ import org.springframework.web.bind.annotation.ResponseBody; @ResponseBody public interface UserRepository extends JpaRepository { + + Users findByusername(String userName); } diff --git a/src/main/java/com/example/server_site_api/servies/AuthenticationProviderCus.java b/src/main/java/com/example/server_site_api/servies/AuthenticationProviderCus.java new file mode 100644 index 0000000..f2ad068 --- /dev/null +++ b/src/main/java/com/example/server_site_api/servies/AuthenticationProviderCus.java @@ -0,0 +1,49 @@ +package com.example.server_site_api.servies; + +import com.example.server_site_api.models.Users; +import com.example.server_site_api.repositories.UserRepository; +import org.jspecify.annotations.Nullable; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AuthenticationProvider; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.authority.AuthorityUtils; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +@Service +public class AuthenticationProviderCus implements AuthenticationProvider { + + @Autowired + UserRepository ur; + + @Override + public @Nullable Authentication authenticate(Authentication authentication) throws AuthenticationException { + String username = authentication.getName(); + String password = authentication.getCredentials().toString(); + + Users user = ur.findByusername(username); + + System.out.println("user" + user); + + if (user.getPassword().equals(password)) { + // true + System.out.println("da vao"); + return new UsernamePasswordAuthenticationToken( + username, + password, + AuthorityUtils.createAuthorityList("ROLE_ADMIN") + ); + }else { + throw new BadCredentialsException("tai khoan khong chinh xac"); + } + } + + @Override + public boolean supports(Class authentication) { + return UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication); + } + +} diff --git a/src/main/java/com/example/server_site_api/servies/CustomUserDetialService.java b/src/main/java/com/example/server_site_api/servies/CustomUserDetialService.java deleted file mode 100644 index 0adcd9c..0000000 --- a/src/main/java/com/example/server_site_api/servies/CustomUserDetialService.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.example.server_site_api.servies; - -import com.example.server_site_api.repositories.UserRepository; -import org.springframework.beans.factory.annotation.Autowired; -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.core.userdetails.UsernameNotFoundException; -import org.springframework.stereotype.Service; - -@Service -public class CustomUserDetialService implements UserDetailsService { - - @Autowired - UserRepository ur; - - - @Override - public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { - return User - .withUsername("user") - .password("{noop}123123") - .roles("ADMIN") - .build(); - } -}