订阅设计模式:春天

我正在使用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.

希望能帮助到你.

上一篇:DataTable方法总结:GroupBy、Distinct、Select、Merge


下一篇:SQL案例解析