我有一项服务,可以访问数据库。此服务由多个应用程序使用。 其中一个应用程序需要特殊功能。应该只有一个(管理)用户,它可以同时操作数据。此应用程序还与其他服务通信。我想用两种方法扩展第二个服务的功能:
bool Acquire()
1. Check if an other user currently holds ownership.
1.1 if true => return false (acquirement failed).
1.2 if false => proceed.
2. set ownership to client connection at server side.
3. return true.
void Release()
1. Check if the client connection currently holds ownership.
1.1 if true => remove ownership of client connection at server side.
1.2 if false => do nothing.
我的问题是:这是一个好的设计模式吗?在我看来,我不应该只为一个特殊的应用程序要求更改数据库服务。
答案 0 :(得分:2)
同意,这听起来像是一个漏洞抽象。我认为将其转变为安全/授权问题会更合适。
定义一个特殊的安全令牌,一次只能授予一个用户。
现在您可以创建一个Decorator around your data access Gateway来检查该特定安全令牌是否属于当前安全上下文。
通过将问题分成不同的类,您可以遵守SOLID原则。