订阅设计模式:Spring
Subscription design pattern : Spring
我正在使用 spring、spring 安全、休眠和 Oauth 构建基于云的应用程序。
- 它有不同的产品,每个产品有多个
模块。模块也有多种功能。
- 客户必须独立订阅每个产品才能使用它们
每个客户端可以有多个用户,并且客户端必须提供其用户对产品的访问权限。
客户在订阅时必须 select 套餐(银,金,..)
每个产品
包将包含 模块详细信息和每个产品允许的用户数 ,并且客户用户将是
只能访问客户端所在的模块(selected 包)
已订阅且用户有权访问。
我必须为每个功能创建 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
]
希望对您有所帮助。
我正在使用 spring、spring 安全、休眠和 Oauth 构建基于云的应用程序。
- 它有不同的产品,每个产品有多个 模块。模块也有多种功能。
- 客户必须独立订阅每个产品才能使用它们
每个客户端可以有多个用户,并且客户端必须提供其用户对产品的访问权限。
客户在订阅时必须 select 套餐(银,金,..) 每个产品
包将包含 模块详细信息和每个产品允许的用户数 ,并且客户用户将是 只能访问客户端所在的模块(selected 包) 已订阅且用户有权访问。
我必须为每个功能创建 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
]
希望对您有所帮助。