您可以在castra-chat 演示中查看一些非常基本的身份验证代码。
Castra 中的身份验证是通过 RPC 端点函数上的注释完成的。当函数作为 RPC 调用的端点被调用时,这些注释成为断言,但在从 REPL 或其他函数调用时则不会。将其视为仅在客户端调用函数时将代码注入函数的一种方式。这种架构有几个好处:
- 身份验证成为 RPC 函数本身的一种先决条件,但由于它们是作为函数上的注释实现的,因此它们不会与 RPC 函数的关注点耦合。
- 以这种方式实现的身份验证是图灵完备的:任何可以想象的身份验证方案都可以直接在您的应用程序中实现,作为 clojure 库。Lisp 可以做到 (tm)。只要相信 :)
- 您可以组合 RPC 函数而无需模拟状态,因为只评估客户端直接调用的端点的注释。
- 您可以在 REPL 中或从测试中调用 RPC 端点,而无需模拟状态。当然,如果您希望测试 REPL 中可能存在的先决条件。