有一個web應用程序在服務器上使用以下堆棧: akka-persistence/service-layer/akka-http(for REST)訪問/授權控制:akka-persistence /服務層/ akka-http堆棧
問題是: 我怎樣才能 - 以最優雅,最乾燥的方式 - 確保只有那些用戶可以執行服務層中有權這樣做的功能(在給定的輸入參數下)。
因此,例如,讓我們簡單的例子:
getEntity(userID:UserID, ref:EntityID):Entity
= ???
我應該如何修改getEntity
這樣只有那些用戶被允許在調用者的用戶標識與參數中的用戶標識相同的情況下執行它?
什麼是最優雅,可組合,乾燥的方式來做到這一點?
使用自定義monads?
使用延續monads?
使用akka-http樣式指令?
使用implicits?
使用Free-Monads?
使用箭頭?
使用Kleiesly?
我無法想象。
什麼是最簡單的事情,可能工作? –
這取決於應用程序的大小,權限系統的複雜性以及您的口味。沒有一個適合所有問題的解決方案。 – michaJlS
我的解決方案是授權服務,它手動複製我的服務方法的接口,以及一個Credentials參數,它封裝了作出授權決定所需的所有數據。外部API通過授權Facade調用服務方法。我相信這可以做得更多,但是我們沒有那麼多的服務。 – acjay