尝试访问putmapping URL时禁止响应

时间:2019-08-22 14:16:54

标签: spring-boot spring-security postman

我尝试使用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" }

1 个答案:

答案 0 :(得分:-1)

使用antMatchers(HttpMethod.PUT,“ / updateLocation / *”)代替antMatchers(HttpMethod.PUT,“ / updateLocation/**")。

删除一个星号。