Я использую аутентификацию на основе токенов, чтобы предоставить доступ к API моего веб-сайта зарегистрированным пользователям для доступа к нему.
Я получаю следующую ошибку.
{"_status": "ERR", "_error": {"message": "Please provide proper credentials", "code": 401}}
Я храню имя пользователя, пароль, адрес электронной почты, токен в схеме моих людей.
"token" : "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MzAxMzg4NTQsInN1YiI6IjU1M2RlMjcwYmVkMDY5MTYwOWRiMWRkNyIsImV4cCI6MTQzMTM0ODQ1NH0.-H8m19tWeOgDXcem9pNjD3XXefMgGKv-ao3U8W9_P1U",
"username": <username>,
"password": <password>,
"email": <email>
Я кодирую свой токен следующим образом, используя
def create_token(user):
payload = {
'sub': str(user['_id']),
'iat': datetime.now(),
'exp': datetime.now() + timedelta(days=14)
}
token = jwt.encode(payload, TOKEN_SECRET)
return token.decode('unicode_escape')
обновление моего токена возврата в базу данных следующим образом после успешного входа пользователя в систему
accounts = app.data.driver.db['people']
accounts.update({'email': request.json['email']},{"$set":{'token':token}})
Функция аутентификации My Token показана ниже.
class TokenAuth(TokenAuth):
def check_auth(self, token, allowed_roles, resource, method):
accounts = app.data.driver.db['people']
return accounts.find_one({'token': token})
Мой TokenAuth включается следующим образом.
app = Eve(__name__,static_url_path='/static', auth=TokenAuth)
отправка запроса с помощью curl следующим образом
curl -X GET "http://127.0.0.1:8000/api/people" -H "Content-Type: application/json" -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MzAxMzg4NTQsInN1YiI6IjU1M2RlMjcwYmVkMDY5MTYwOWRiMWRkNyIsImV4cCI6MTQzMTM0ODQ1NH0.-H8m19tWeOgDXcem9pNjD3XXefMgGKv-ao3U8W9_P1U"
получение следующей ошибки
{"_status": "ERR", "_error": {"message": "Please provide proper credentials", "code": 401}}