我尝试使用PutMapping更新控制器中的记录,并且也使用spring-security。我不知道为什么在设置access("permitAll")
对象时提到httpSecurity
时显示禁止。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/home").hasAuthority("USER")
.antMatchers("/username").authenticated()
.antMatchers("/testAdmin").hasAuthority("ADMIN")
.antMatchers(HttpMethod.PUT, "/updateLocation/**").access("permitAll")
.antMatchers("/","/**").access("permitAll")
.anyRequest().authenticated()
/* ... */
}
// in controller:
@Data
class UpdateUserLocation{
private double lat;
private double lng;
}
//@CrossOrigin(origins = "http://localhost:8085")
@PutMapping(path="/updateLocation/{userId}", consumes={MediaType.APPLICATION_JSON_VALUE}, produces= {MediaType.APPLICATION_JSON_VALUE})
UserLocations updateUserLocation(@PathVariable long id, @RequestBody UpdateUserLocation usr) {
UserLocations usrLoc = userLocRepo.findByUser_id(id);
System.out.println("Usr loc:" + usrLoc.getId() + " " + usrLoc.getLat()+","+usrLoc.getLng());
usrLoc.setLat(usr.getLat());
usrLoc.setLng(usr.getLng());
userLocRepo.saveAndFlush(usrLoc);
return usrLoc;
}
在邮递员中,我使用我的链接:
localhost/updateLocation/2
其中2-代表我要更新的对象的ID
并在正文中添加:
{
"lat" : "47.2",
"lng" : "27.9"
}
我得到这个回应:
{
"timestamp": "2019-08-22T13:56:09.189+0000",
"status": 403,
"error": "Forbidden",
"message": "Forbidden",
"path": "/updateLocation/2"
}
答案 0 :(得分:-1)
使用antMatchers(HttpMethod.PUT,“ / updateLocation / *”)代替antMatchers(HttpMethod.PUT,“ / updateLocation/**")。
删除一个星号。