首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问/授权控制:akka-persistence/服务层/akka-http栈

访问/授权控制:akka-persistence/服务层/akka-http栈
EN

Stack Overflow用户
提问于 2017-08-06 19:32:55
回答 1查看 356关注 0票数 0

有一个web应用程序在服务器上使用以下堆栈: akka-persistence/service-layer/akka-http (用于REST)

问题是:我如何才能--以最优雅、最干练的方式--确保只有那些有权在服务层执行函数的用户(在给定的输入参数下)才能执行函数。

举个例子,让我们举个简单的例子:

getEntity(userID:UserID, ref:EntityID):Entity =?

当调用者的userID与参数中的userID相同时,我应该如何修改getEntity,以便只允许那些用户执行它?

通常情况下,最优雅、最沉着、最干练的方式是什么?

使用定制的monad?

使用延续单体?

使用akka-http样式指令?

使用隐含?

使用Free-Monads?

使用箭头?

使用Kleiesly?

我真的无法想象。

EN

回答 1

Stack Overflow用户

发布于 2017-08-06 23:38:48

我将如何使用隐式上下文:

代码语言:javascript
复制
getEntity(userID:UserID, ref:EntityID)(implicit c: Context): Entity = ???

然后,上下文中的任何内容都取决于您,即

代码语言:javascript
复制
trait Context {
   def canExecute(userId: UserID): Boolean
}

您可能希望将其拆分,以便拥有角色、权限等。此外,如果您使用的是类型参数,则可以使用上下文绑定,使其更简洁:

代码语言:javascript
复制
trait Context[A] { ... }
def getEntity[A: Context](userID:UserID, ref:EntityID): Entity = ???

隐式参数非常适合于传递上下文信息,如“当前安全上下文”或“相关id”,这些信息不是域逻辑的核心,但必须涉及整个堆栈。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45531583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档