我正在尝试在spring boot中创建基于角色的授权,并且我对spring来说是全新的,我主要使用PHP。
找到此链接:
https://spring.io/guides/gs/securing-web/
一切都很好,但与数据库没有连接,我还试图了解如何创建与数据库的授权
public class UserDetailsServiceImp implements UserDetailsService {
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
/*Here we are using dummy data, you need to load user data from
database or other third party application*/
User user = findUserbyUername(username);
UserBuilder builder = null;
if (user != null) {
builder = org.springframework.security.core.userdetails.User.withUsername(username);
builder.password(//new BCryptPasswordEncoder().encode(user.getName())
user.getName() );
builder.roles("USER");
} else {
throw new UsernameNotFoundException("User not found.");
}
return builder.build();
}
private User findUserbyUername(String username) {
return userRepository.findByName(username);
}
}@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home", "/demo/all", "/demo/add", "/demo/findby").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
/*@Bean
@Override
public UserDetailsService userDetailsService() {
UserDetails user =
User.withDefaultPasswordEncoder()
.username("user")
.password("password")
.roles("USER")
.build();
return new InMemoryUserDetailsManager(user);
}*/
@Bean
public UserDetailsService userDetailsService() {
return new UserDetailsServiceImp();
};
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
};
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService());//.passwordEncoder(passwordEncoder());
}
}UserRepository
public interface UserRepository extends CrudRepository<User, Integer> {
User findByName(String name);
}用户
@Entity // This tells Hibernate to make a table out of this class
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String name;
private String email;
private String[] roles;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}在浏览器收到“无效用户名和密码”时。
这里有什么地方是错的,我从数据库中找到的唯一一件事就是通过名称和比较
请帮帮我!任何了解春天的人
发布于 2020-10-02 00:38:56
在您的UserDetailsServiceImp类中尝试以下内容:
@Autowired
private UserRepository userRepository;https://stackoverflow.com/questions/64152699
复制相似问题