订阅设计模式:春天

时间:2017-02-07 06:48:26

标签: spring spring-mvc design-patterns subscriptions struts2-interceptors

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

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

  • 客户必须在订阅时选择套餐(银色,金色,..) 对于每种产品

  • 套餐将为每个产品和客户端用户提供模块详细信息和用户数 只能访问哪个客户端的模块(选定的包) 订阅并且用户可以访问。

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

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

希望它有所帮助。