gpt4 book ai didi

java - Spring Security 身份验证未给出 401 错误

转载 作者:行者123 更新时间:2023-11-30 03:05:38 27 4
gpt4 key购买 nike

在过滤器中,我在 spring 安全上下文中添加了以下角色。

    @Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
GrantedAuthority authority = new SimpleGrantedAuthority(ANONYMOUS);
List<GrantedAuthority> grantedAuthority = new ArrayList<>();
grantedAuthority.add(authority);
Authentication authentication = new AnonymousAuthenticationToken(ANONYMOUS, ANONYMOUS, grantedAuthority);
SecurityContextHolder.getContext().setAuthentication(authentication);
arg2.doFilter(arg0,arg1);
}

然后从 Controller 的 REST API 方法中,我检查授权角色,如下所示,

@RestController
@RequestMapping(value = "/api")
public class MyController {
@RequestMapping(value = "/myservice1", method = RequestMethod.GET)
@PreAuthorize("hasRole('ROLE_USER')")
public HttpEntity<String> myService() {
System.out.println("-----------myService invoke-----------");
return new ResponseEntity<String>(HttpStatus.OK);
}
}

但是当我调用上面的 API 时,它成功打印了系统输出。但它应该给我一个 401 未经授权的错误,对吗?

最佳答案

只需通过以下方式启用方法级安全性:

@EnableGlobalMethodSecurity(prePostEnabled = true)

关于java - Spring Security 身份验证未给出 401 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34839056/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com