前后端分离+spring Security 操作其实成功了,但中途总是会抛出异常说没有权限,利用swagger或者postman测试都不会有这种问题,
但通过前端测试时,后端打断点时就会发现总是会请求两次,一次没有权限,一次检测到有权限,虽然有异常,但是不影响使用
同一个请求,出现两次权限验证
第一次没有权限
紧接着第二次就通过了
这是我自定义的AccessDecisionManager
后来发现是因为浏览器对复杂跨域请求的一种处理方式,在真正发送请求之前,会先进行一次预请求,也就是OPTIONS,OPTIONS的第一次请求,他的作用是用于试探性的服务器响应是否正确,即是否能接受真正的请求,所以到后端的时候会有一个Request Method参数是OPTIONS,还有一次就是我们真正的请求,比如get或是post请求方式,也就是两次,第一次没有token 所以会抛异常
所以只要在代码中添加一个关于OPTIONS操作的权限管理就行了
问题解决