订阅设计模式:Spring

Subscription design pattern : Spring

我正在使用 spring、spring 安全、休眠和 Oauth 构建基于云的应用程序。

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

问题: 我正在使用 Spring Oauth2 来保护我的 API 所以只有注册的客户和他们的用户可以访问它们,但他们可以访问所有 API 的。我应该只允许客户端访问它有权访问 to/subscribed 的那些 API。我怎样才能在 Spring 中做到这一点?

目前我正计划使用拦截器,但这在很大程度上取决于 URL 模式。所以对于每个产品和模块,我将有不同的拦截器

URL 模式:http://abc/rest/产品/模块/..

有没有更好的实现方式?

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

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

要使 @Secured@PreAuthorize 正常工作,您需要在 Spring 引导上下文 class.[=16= 上添加注释 @EnableGlobalMethodSecurity ]

希望对您有所帮助。