Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 邮递员403禁止留言_Java_Spring_Rest_Postman - Fatal编程技术网

Java 邮递员403禁止留言

Java 邮递员403禁止留言,java,spring,rest,postman,Java,Spring,Rest,Postman,我用restspring制作了一些api。GET request在Postman中工作正常,但当我尝试执行POST request时,收到以下错误: { "timestamp": "2018-09-25T06:39:27.226+0000", "status": 403, "error": "Forbidden", "message": "Forbidden", "path": "/cidashboard/projects" } 这是我的控制器: @Re

我用restspring制作了一些api。GET request在Postman中工作正常,但当我尝试执行POST request时,收到以下错误:

{
    "timestamp": "2018-09-25T06:39:27.226+0000",
    "status": 403,
    "error": "Forbidden",
    "message": "Forbidden",
    "path": "/cidashboard/projects"
}
这是我的控制器:

@RestController
@RequestMapping(ProjectController.PROJECT_URL)
public class ProjectController {

    public static final String PROJECT_URL = "/cidashboard/projects";

    private final ProjectService projectService;

    public ProjectController(ProjectService projectService) {
        this.projectService = projectService;
    }

    @GetMapping
    List<Project> getAllProjects(){
        return projectService.findAllProjects();
    }

    @GetMapping("/{id}")
    Project getProjectById(@PathVariable int id) {
        return projectService.findProjectById(id);
    }

    @PostMapping
    void addProject(@RequestBody Project newProject) {
        projectService.saveProject(newProject);
    }
}

使用
@EnableWebSecurity
用法启用spring安全性。默认情况下启用
csrf
支持,您必须禁用它以防止出现禁止的错误

@Override
protected void configure(HttpSecurity http) throws Exception {
     http       //other configure params.
         .csrf().disable();
}
PS:415不受支持的类型-->添加到映射中,如从邮递员发送的数据类型的注释

@PostMapping(consumes = "application/json")
void addProject(@RequestBody Project newProject) {
    projectService.saveProject(newProject);
}

你能添加安全配置类代码吗?我猜你的post请求中没有包含CSRF令牌。我添加了,现在我收到了这个错误:415不支持的媒体类型,所以你的建议是让应用程序只在测试时更不安全…不支持的媒体类型关于你的发送类型。哪种类型是从postman JSON或whatelse发送的?@M.Deinum但他忽略了csrf,这意味着他不需要这个令牌。如果他使用,csrf支持是默认的。这意味着他不想使用csrf令牌。这是一个假设。他之所以忽略csrf令牌,很可能是因为他不知道默认情况下启用了csrf保护。尽管如此,给出建议以降低应用程序的安全性始终是一个糟糕的答案(即imho)。
@PostMapping(consumes = "application/json")
void addProject(@RequestBody Project newProject) {
    projectService.saveProject(newProject);
}