代码之家  ›  专栏  ›  技术社区  ›  Jeremy Raymond

在面向文档的系统中,如何处理经过身份验证的用户对资源的访问?

  •  3
  • Jeremy Raymond  · 技术社区  · 15 年前

    我正在开发一个面向文档的应用程序,需要管理用户对文档的访问。我有一个模块处理用户身份验证,另一个模块处理数据存储上的文档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. 
    

    有没有更好的办法来处理这件事?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Community noseratio    7 年前

    据我所说 answer to "How do I elegantly check many conditions in Erlang"

    save_doc(Doc, User) ->
        ok = auth:save_allowed(Doc, User),
        data_access:save_doc(Doc).
    
    推荐文章