我正在使用spring,spring security,hibernate和Oauth构建基于云的应用程序.
>它有不同的产品,每个产品都有多个
模块.模块还具有多种功能.
>客户必须独立订阅每个产品才能使用它们
>每个客户端可以拥有多个用户,客户端必须提供访问其用户产品的权限.
>客户必须在订阅时选择套餐(银,金,..)
对于每个产品
>包将包含模块详细信息,并且每个产品和客户端用户都不允许使用用户
只能访问哪个客户端的模块(选定的包)
订阅和用户有权访问.
我必须为每个功能创建Rest Api.
问题:我使用Spring Oauth2来保护我的API,所以只有注册的客户端和他们的用户可以访问它们,但他们可以访问所有的API.我应该允许客户端只访问它有权访问/订阅的那些API.我怎样才能在Spring中实现这一目标?
目前我打算使用感知器,但它在很大程度上取决于URL模式.因此,对于每个产品和模块,我将使用不同的拦截器
网址格式:http://abc/rest/PRODUCT / MODULE / ..
有没有更好的方法来实现它?
解决方法:
您可以选择其他方式,这可能更好,因为您不必编写自定义URL拦截器.
您可以将Spring Security与@Secured({“ROLE”})或@PreAuthorize注释一起使用,您可以为每个产品创建角色,并为客户提供他们订阅的角色.您可以找到有关此注释及其工作原理的更多信息here.
要使@Secured和@PreAuthorize工作,您需要在Spring Boot上下文类中包含注释@EnableGlobalMethodSecurity.
希望能帮助到你.