当我通过自定义 bean 激活 Spring Security 时,@PreAuthorize("@mySecurity.check(#car)")有效请求(检查返回 true)将以 404 结束,无效请求将以 200 结束。没有 PreAuthorize 一切正常。
授权是通过JWT完成的,并且授予的权限设置正确。
当我单步执行调试器时,预授权检查正常工作,返回 true 或 false。
我启用了以下功能:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
Rest 控制器使用以下注释实现该方法
@PreAuthorize("@mySecurity.check(#car)")
public List<Driver> getAllVersions(String car) {
没有安全检查的请求看起来像
2019-09-30 13:34:22.306 DEBUG 26204 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet : Completed 200 OK
2019-09-30 13:34:42.042 DEBUG 26204 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet : GET "/api/v1/car/foobar", parameters={}
...
2019-09-30 13:34:42.049 DEBUG 26204 --- [nio-8080-exec-4] m.m.a.RequestResponseBodyMethodProcessor : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/json, application/*+json]
2019-09-30 13:34:42.050 DEBUG 26204 --- [nio-8080-exec-4] m.m.a.RequestResponseBodyMethodProcessor : Writing [{
"id": "hi",
"name": "hi",
"isActive": false
}]
2019-09-30 13:34:42.052 DEBUG 26204 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet : Completed 200 OK
当激活 PreAuthorize 并执行有效请求时,它似乎部分工作。
2019-09-30 13:44:22.597 DEBUG 7400 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : GET "/api/v1/car/foobar", parameters={}
...
2019-09-30 13:44:28.912 DEBUG 7400 --- [nio-8080-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Selected '*/*' given [*/*]
2019-09-30 13:44:28.938 DEBUG 7400 --- [nio-8080-exec-1] o.s.w.servlet.view.InternalResourceView : View name '/api/v1/car/foobar2', model {configurationVersionList=[{
"id": "bar",
"name": "bar",
"isActive": false
}, {
"id": "foo",
"name": "foo",
"isActive": false
}]}
白衣非少年
qq_遁去的一_1
相关分类