如何使用 SurrealDB 登录范围?

Leo*_*896 7 database surrealdb

我正在将 SurrealDB 功能页面中的示例代码用于用户/通行证系统

DEFINE SCOPE admin SESSION 1d
        SIGNUP ( CREATE user SET user = $user, pass = crypto::argon2::generate($pass) )
        SIGNIN ( SELECT * FROM user WHERE user = $user AND crypto::argon2::compare(pass, $pass));
Run Code Online (Sandbox Code Playgroud)

不幸的是,文档没有说明如何登录范围。我可以使用 SurrealQL 或 API 端点来执行此操作吗?

小智 7

高级答案:您signin从您使用的任何客户端库调用,目前大部分仍在开发中,例如参见https://github.com/surrealdb/surrealdb.js


低级答案,有多种登录类型,常规 root 登录需要userpass。对于范围登录,您分别为命名空间、数据库和范围指定NSDBSC值,然后添加该范围所需的任何值。

您可以连接到位于 的 websocket ws://<host>:<port>/rpc,然后以 json 格式发送命令

{
  "id": <an id so you can identify responses later on>,
  "method": <one of the available commands>,
  "params": <an array of parameters>
}
Run Code Online (Sandbox Code Playgroud)

作为一个最小的示例,让我们创建一些命令来登录到您定义的范围:

method     params
------     ------
signin     {
              "NS": <ns>,
              "DB": <DB>,
              "SC": "admin",
              // these parameters can be anything you request in the scope
              "user": <user>,
              "pass": <pass>
           }
use        <namespace>, <database>
// use your session ...
Run Code Online (Sandbox Code Playgroud)