This commit is contained in:
2026-06-02 20:35:09 +07:00
parent 5ce3860502
commit 5c9e366bab
5 changed files with 59 additions and 26 deletions

View File

@@ -1,5 +1,7 @@
package com.example.server_site_api.config; 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.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer; import org.springframework.security.config.Customizer;
@@ -13,6 +15,9 @@ import org.springframework.security.web.SecurityFilterChain;
@EnableWebSecurity @EnableWebSecurity
public class SecurityConfig { public class SecurityConfig {
@Autowired
AuthenticationProviderCus authenticationProviderCus;
@Bean @Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
@@ -29,6 +34,8 @@ public class SecurityConfig {
) )
.httpBasic(Customizer.withDefaults()); .httpBasic(Customizer.withDefaults());
http.authenticationProvider(authenticationProviderCus);
return http.build(); return http.build();
} }
} }

View File

@@ -12,6 +12,7 @@ public class Users {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
private String username; private String username;
private String password; private String password;

View File

@@ -6,4 +6,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
@ResponseBody @ResponseBody
public interface UserRepository extends JpaRepository<Users, Long> { public interface UserRepository extends JpaRepository<Users, Long> {
Users findByusername(String userName);
} }

View File

@@ -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);
}
}

View File

@@ -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();
}
}