EVE REST-在python Eve框架中出现AuthToken错误401
问题描述:
我目前正在研究python-eve库来创建一个restful API,但是当我按照本教程实现我获得的“Token Authentication”时遇到了一些问题错误401说“请提供适当的凭据”。EVE REST-在python Eve框架中出现AuthToken错误401
这里是我的用户模式:
RESOURCE_METHODS = ['GET', 'POST']
ITEM_METHODS = ['GET','PATCH','DELETE']
DOMAIN = {
'user': {
'additional_lookup': {
'url': 'regex("[\w]+")',
'field': 'username',
#'url': '[\w]+',
},
'schema': {
'firstname': {
'type': 'string'
},
'lastname': {
'type': 'string'
},
'phone': {
'type': 'string'
},
'username': {
'type': 'string',
'required': True,
'unique': True,
},
'password': {
'type': 'string',
'required': True,
},
'roles': {
'type': 'list',
'allowed': ['user', 'superuser', 'admin'],
'required': True,
},
'token': {
'type': 'string',
'required': True,
}
},
'cache_control': '',
'cache_expires': 0,
'allowed_roles': ['superuser', 'admin'],
},
'item': {
'schema': {
'name':{
'type': 'string'
},
'username': {
'type': 'string'
}
}
},
}
这里是我的app.py
from eve import Eve
from eve.auth import TokenAuth
import random
import string
class RolesAuth(TokenAuth):
def check_auth(self, token, allowed_roles, resource, method):
accounts = app.data.driver.db['eve']
lookup = {'token': token}
if allowed_roles:
lookup['roles'] = {'$in': allowed_roles}
account = accounts.find_one(lookup)
return account
def add_token(documents):
for document in documents:
document["token"] = (''.join(random.choice(string.ascii_uppercase)
for x in range(10)))
app = Eve(settings='settings.py')
if __name__ == '__main__':
app = Eve(auth=RolesAuth)
app.on_insert_accounts += add_token
app.run()
任何想法,为什么我用401
上午结束了使用python 3.4
如果可能的话,请为我提供工作代码。我是这个领域的小菜鸟。
谢谢!
答
你需要编码的令牌如下:
echo "54321:" | base64
请不要忘记最后:
既然你直接找了token
(根据您的代码),不需要username
。
我不确定哪一个编码base64以及如何去做。我有一个收集“用户名”= ab和“令牌”= 54321 –