3

我正在开发一个面向文档的应用程序,需要管理用户对文档的访问。我有一个处理用户身份验证的模块,以及另一个处理数据存储上的文档 CRUD 操作的模块。一旦用户通过身份验证,我需要根据用户的权限强制执行用户可以和不能对文档执行的操作。我能想到的将这两个部分集成在一起的最佳选择是创建另一个模块,该模块复制数据 API,但也将经过身份验证的用户作为参数。该模块会将授权检查委托给 auth 模块,并将文档操作委托给数据访问模块。就像是:

 -module(auth_data_access).

 % User is authenticated (logged into the system)
 % save_doc validates if user is allowed to save the given document and if so
 % saves it returning ok, else returns {error, permission_denied}
 save_doc(Doc, User) ->
    case auth:save_allowed(Doc, User) of
       ok ->
          data_access:save_doc(Doc);
       denied ->
          {error, permission_denied}
     end
  end. 

有没有更好的方法可以处理这个问题?

4

1 回答 1

0

根据我对“如何优雅地检查 Erlang 中的许多条件”的回答,我更喜欢类似的东西

save_doc(Doc, User) ->
    ok = auth:save_allowed(Doc, User),
    data_access:save_doc(Doc).
于 2010-01-13T12:13:42.220 回答