Spring security-带REST方法的CSRF

Spring security-带REST方法的CSRF,spring,rest,security,csrf,Spring,Rest,Security,Csrf,我有一个restapi,在那里我公开了get、post、put和delete方法。我正在使用spring安全性并实现基本身份验证。我允许GET请求由角色为user的用户发出,而其他请求只能由角色为ADMIN的用户发出。我发现,如果我不添加crsf().disable()行,只有GET方法才能正常工作,而我得到了一个403禁止用于其他方法。但是,当我添加csrf().disable()时,所有方法都可以正常工作。这是预期的还是我做错了什么?当启用csrf时,springboot希望您将csrf令牌

我有一个restapi,在那里我公开了get、post、put和delete方法。我正在使用spring安全性并实现基本身份验证。我允许GET请求由角色为
user
的用户发出,而其他请求只能由角色为ADMIN的用户发出。我发现,如果我不添加
crsf().disable()
行,只有GET方法才能正常工作,而我得到了一个403禁止用于其他方法。但是,当我添加
csrf().disable()
时,所有方法都可以正常工作。这是预期的还是我做错了什么?

当启用
csrf
时,springboot希望您将csrf令牌与向端点发出的每个请求一起发送。如果未包括此项,则请求将被拒绝,您将获得403响应代码。它就像一个HTTP会话。但是rest端点是无状态的,所以最好不要使用
csrf
。Rest端点本质上不受csrf攻击,因为它们是无状态的