我为供应链编写了Python客户端。我可以这样创建一个新代理:
client = SupplyChainClient()
client.create_agent('test')
client.post_user('test')
之后,我可以创建一个记录类型,最后创建一个记录。现在,我不想在创建新记录之前创建客户端。因此,我正在尝试使用如下用户名和密码对客户端进行身份验证:
import requests
resp = requests.post('http://localhost:3000/authorization', auth=('test', '<hash value of the password>'))
print(resp.json())
我已经从RethinkDB中获得了哈希值进行测试。
每次我收到此错误:
{'error': 'Authorization requires username and password'}
有什么想法吗?
答案 0 :(得分:0)
正如我在服务器那部分的源代码中看到的那样,您没有在请求中提供用户名和密码。
// Checks an object with username and password keys.
// Returns an auth token and the user\'s private key if it passes.
const authorize = ({ username, password }) => {
if (!username || !password) {
const message = 'Authorization requires username and password'
return Promise.reject(new BadRequest(message))
}
return users.query(users => users.filter({ username }))
.then(matches => {
if (matches.length === 0) throw new Error()
const user = matches[0]
return bcrypt.compare(password, user.password)
.then(passValid => {
if (!passValid) throw new Error()
return createToken(user.publicKey)
})
.then(token => ({
authorization: token,
encryptedKey: user.encryptedKey
}))
})
.catch(() => { throw new Unauthorized('Authorization Failed') })
}
如果要登录,则创建用户位于用户->创建中。