如何验证给定密码是否与 arangoDB 中 _users
集合中的密码匹配?
我知道可以使用 Foxx 应用程序和 arangosh 来完成,但我没有使用它们,因为我在 python 中使用我自己的 API。所以我不知道如何在不使用 Foxx 或 arangosh 的情况下访问密码并检查是否与给定密码匹配。
最佳答案
您不应依赖系统 _users
集合来实现您自己的用户逻辑。该集合严格用于 ArangoDB 自己的用户对象,而不是用于应用程序级用户管理。
如果您确实想使用 ArangoDB 自己的用户管理,则在禁用身份验证时公开该信息的最佳方法是使用 ArangoDB 内的 org/arangodb/users 模块(例如使用 Foxx)。该模块提供了一个 isValid
方法,该方法接受用户名和密码并返回一个 bool 值,指示该组合是否有效:
var users = require('org/arangodb/users');
controller.post('/checkpw', function (req, res) {
var credentials = req.params('credentials');
res.json({
valid: users.isValid(
credentials.username,
credentials.password
)
});
})
.bodyParam('credentials', joi.object({
username: joi.string().required(),
password: joi.string().required()
}).required());
users HTTP API 目前没有公开此方法,因此这是在不依赖于极其不稳定的实现细节的情况下实现此目的的唯一方法(_users
集合的格式在 2.0 版本中已发生变化)。 x 并且该集合将来可能会再次更改)。
编辑:ArangoDB 3.0 可能会添加一个 API 路由,当提供有效的用户名和密码时,该路由返回一个 token (而不是用 session 对象弄乱数据库)。这应该可以更轻松地与内置用户管理集成,但注意事项保持不变:ArangoDB 用户主要用于 API 级授权,而不是应用程序逻辑。
关于python - arangodb 验证_users 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37324318/