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

如果可能的话,请为我提供工作代码。我是这个领域的小菜鸟。

谢谢!

+0

我不确定哪一个编码base64以及如何去做。我有一个收集“用户名”= ab和“令牌”= 54321 –

你需要编码的令牌如下:

echo "54321:" | base64 

请不要忘记最后:

既然你直接找了token(根据您的代码),不需要username