配置Spring Security直到現在,我一直在使用安全領域來驗證和授權用戶。 但是,我想切換到Spring Security框架,最好不要使用Spring框架的其他任何部分。 我設法設置了一個httpBasic內存中驗證,它工作正常。使用EJB
現在我想創建一個自定義UserDetailsService實現我自己的授權。 我的UserDetailsService-Implementation是一個無狀態的EJB,我無法注入到SecurityConfig中,出現錯誤 我該怎麼做才能使它工作?
謝謝!
這是迄今爲止我唯一的配置:
public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
public SecurityWebApplicationInitializer() {
super(SecurityConfig.class);
}
}
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
}
}
@Stateless
public class UserDetailsImpl implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//No Implementation yet
return null;
}
}
編輯:
我改變了我的UserDetailsServiceImpl從@Stateless到@Service和自動裝配Autowired它SecurityConfig。此外,我註釋了SecurityConfig與
@Configuration
@ComponentScan(basePackageClasses = {UserDetailsServiceImpl.class})
以便它可以找到實現。 然而,問題IST注入我的狀態服務到UserDetailsService中引起以下錯誤:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [de.tobias.carsharing.security.SecurityService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.ejb.EJB(name=, lookup=, description=, beanName=, beanInterface=class java.lang.Object, mappedName=)}
是啊,那工作新實例,但很快就不是我的實際problem.As爲試圖注入一個EJB我得到以下錯誤:沒有發現依賴性的[SecurityService]類型的合格bean:期望至少1個符合此依賴關係自動裝填候選資格的bean – Henry
我編輯了我的帖子並提供了更多附加信息。非常感謝! – Henry
是的,這是行不通的,你不能像這樣混合使用Spring和EJB管理的bean。也許這個問題會幫助你,如果你還沒有找到解決方案已經http://stackoverflow.com/questions/12963405/injecting-ejb-3-into-spring-bean – Kajo