订阅设计模式:春天

Sha*_*mar 3 spring design-patterns spring-mvc subscriptions struts2-interceptors

我正在使用spring,spring security,hibernate和Oauth构建基于云的应用程序.

  • 它有不同的产品,每个产品都有多个模块.模块还具有多种功能.
  • 客户必须独立订阅每个产品才能使用它们
  • 每个客户端都可以拥有多个用户,客户端必须提供访问其用户产品的权限.

  • 订阅每个产品时,客户必须选择包(银,金,..)

  • 包将具有模块详细信息,并且每个产品都不允许用户,并且客户端用户将只能访问客户订阅和用户有权访问的模块(选定包).

我必须为每个功能创建Rest Api.

问题:我使用Spring Oauth2来保护我的API,所以只有注册的客户端和他们的用户可以访问它们,但他们可以访问所有的API.我应该允许客户端只访问它有权访问/订阅的那些API.我怎样才能在Spring中实现这一目标?

目前我打算使用感知器,但它在很大程度上取决于URL模式.因此,对于每个产品和模块,我将使用不同的拦截器

网址格式:http:// abc/rest/PRODUCT/MODULE/..

有没有更好的方法来实现它?

Tur*_*lin 5

您可以选择其他方式,这可能更好,因为您不必编写自定义URL拦截器.

您可以将Spring Security与其中的注释@Secured({"ROLE"})@PreAuthorize注释一起使用,您可以为每个产品创建角色,并为客户端提供他们订阅的角色.您可以在此处找到有关此注释及其工作原理的更多信息.

要使用@Secured@PreAuthorize工作,您需要@EnableGlobalMethodSecurity在Spring Boot上下文类中使用注释.

希望能帮助到你.