![](/img/trans.png)
[英]How to test a Rest Service with Spring Security on Spring Boot?
[英]How to use spring security in each REST call in Spring Boot?
我试图了解是否有一种方法可以使用 Spring Security 来帮助我的用例。 基本上,我想在 spring boot 中的每个 REST 调用上调用 spring security,而不是在应用程序启动期间调用一次,并找到用户的角色并根据用户角色进一步限制端点。
我有 3 个不同的休息控制器,即/admin1/*
、 /admin2/*
、 /admin3/*
。
我试过手动限制端点,如下所示。
http.authorizeRequests()
.antMatchers("/admin1/**").permitAll()
.and()
.authorizeRequests()
.antMatchers("/admin2/**").permitAll()
.anyRequest().authenticated();
这实际上将允许/admin1/*
和/admin2/*
API 工作并限制/admin3/*
。 但是,我的用例如下。
在每个 rest 调用中,我们在标头中传递用户 ID。 我想在每次休息调用时使用 spring 安全性,并使用标头中的用户 ID 从数据库中查找用户角色。
如果用户具有ADMIN 1用户角色,我们只需启用/admin1/*
端点并限制/admin2/*
和/admin3/*
。 同样,如果用户具有ADMIN 2用户角色,我们只需启用/admin2/*
端点并限制/admin1/*
和/admin3/*
。 同样,如果用户具有ADMIN 3用户角色,我们只需启用/admin3/*
端点并限制/admin1/*
和/admin2/*
。
有没有办法使用spring security来实现这一点?
谢谢
据我了解,您希望在每次通话时对用户进行身份验证和授权。 真的?
一种方法是使用 JWT(JSON Web 令牌)标记您的 REST API。
https://dzone.com/articles/spring-boot-security-json-web-tokenjwt-hello-world 中的示例可能会有所帮助。
我还建议,不要使用 antMatchers 在configure
方法中基于Roles
限制URL
访问,而是在要保护的类或方法上方使用@PreAuthorize and @PostAuthorize
注释。 这种方式为您的限制策略提供了更大的灵活性。
https://www.baeldung.com/spring-security-method-security 中的示例也可以帮助您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.