所有spring mvc + hibernate + spring安全示例都说我需要创建MyUserService类,其中从springSecurity扩展了UserDetailsService,以将我的数据库与spring安全性绑定。但是当我这样做时,我得到:错误创建名为“webSecurityConfig”的bean没有定义这样的bean UserSerivce,当我尝试将其自动连接到SecurityConfig时,它尚不存在。当我下载任何在线示例时,给我同样的错误。
我在 Git 中的项目 - start_over分支。
我的网络安全配置类:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserService userService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/login", "/").anonymous()
.antMatchers("/admin", "/admin**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/login").permitAll()
.and()
.logout().logoutSuccessUrl("/login").permitAll()
.and()
.csrf().disable();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
我的用户服务:
public interface UserService extends UserDetailsService {
void save(User user);
List<User> getAllUsers();
}
我的用户服务简单
@Service
public class UserServiceImp implements UserService{
@Autowired
private UserDao userDao;
@Transactional
public void save(User user) {
userDao.save(user);
}
@Transactional(readOnly = true)
public List<User> getAllUsers() {
return userDao.getAllUsers();
}
@Transactional(readOnly=true)
@Override
public UserDetails loadUserByUsername(final String username)
throws UsernameNotFoundException {
com.rjproject.entities.User user = userDao.findByUserName(username);
List<GrantedAuthority> authorities =
buildUserAuthority(user.getAuthorities());
return buildUserForAuthentication(user, authorities);
}
富国沪深
开心每一天1111
相关分类