我有一个现有的mongo数据库,其中id(_id)保留为纯字符串。.这是Mongo DB中的示例数据:
{
"_id" : "528bb0e2e4b0442f1479f1b4",
"schoolId" : "URDLKYLFJXLWJGR193778316742298",
"surname" : "Lewis",
"admissionNumber" : "0347",
"firstName" : "Martins"
}
Run Code Online (Sandbox Code Playgroud)
我有一个Java对象,其形式为:
public class Student {
@Id
private String id;
private String schoolId;
private String surname;
private String admissionNumber;
private String firstName;
}
Run Code Online (Sandbox Code Playgroud)
与吸气剂和二传手
我也有一个存储库:
public interface StudentRepository extends MongoRepository<Student, String> {
Student findOneBySurname(String surname);
Student findOneById(String id);
Student findOneBySurnameAndFirstName(String surname, String firstName);
}
Run Code Online (Sandbox Code Playgroud)
当我执行一个studentRepository.findAll()时,我能够正确地填充数据库中的所有Student及其所有字段。
当我执行studentRepository.findOne(“ 528bb0e2e4b0442f1479f1b4”)或studentRepository.findOneById)“ 528bb0e2e4b0442f1479f1b4”)时,它返回null
当我调试mongo查询时,我可以看到它正在调用:
2015-11-19 16:06:32.327 DEBUG 87081 --- [ main] o.s.data.mongodb.core.MongoTemplate : findOne using query: { …Run Code Online (Sandbox Code Playgroud) 我已按如下方式设置Spring Security:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private MongoUserDetailsService userServiceDetails;
@Autowired
private BCryptPasswordEncoder bCryptEncoder;
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/js/**", "/css/**", "/fonts/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.csrf().disable()
.formLogin()
.defaultSuccessUrl("/index", true)
.loginPage("/login")
.permitAll()
.and()
.httpBasic()
.and()
.logout()
.permitAll()
.deleteCookies("JSESSIONID")
.invalidateHttpSession(true);
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(userServiceDetails)
.passwordEncoder(bCryptEncoder);
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器上,我有以下内容:
@RequestMapping(method = RequestMethod.GET)
@Secured({"ADMIN"})
public List<Item> getItems(@RequestBody filter …Run Code Online (Sandbox Code Playgroud)