在python中验证restframework用户

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中验证restframework用户相关的知识,希望对你有一定的参考价值。

所以,我是django和djangorestframework的新人。我在他们的页面中按照他们的教程。 http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/

在该教程中,您可以从djangorestframework api登录页面以django用户身份登录。我的问题是,如果我想创建一个CLI或GUI应用程序并使用请求模块将内容发布到API,但必须首先登录API。我是怎么做到的?

答案

在DRF中,您可以为简单的基于令牌的身份验证添加其他程序包。将rest_framework.authtoken添加到INSTALLED_APPS。要向客户端发出HTTP(S)请求,请传递授权令牌,如Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

对于测试,您可以使用curl

curl -X GET http://127.0.0.1:8000/api/example/ -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

Read more...

另一答案

您可以设置用户必须始终作为settings.py(在您的Web服务器项目中)的默认设置进行身份验证:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),

有关更多信息here

在您的Web客户端项目中,如您提出的问题之一,您必须在发送到Web服务器的HTTP消息中添加Authentication头。一个例子(TypeScript Angular应用程序实现)将是:

import {Injectable} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {Observable} from 'rxjs/Observable';
import {Spacecraft} from '../model/spacecraft';

/* Create the authentication headers for the HTTP requests to the DRF project's API.
 * Note: uses btoa(): base-64 encoding of ASCII string, see https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/btoa.
 */
const basicAuthenticationToken = btoa(environment.REST_API.username + ':' + environment.REST_API.password);
const httpOptions = {
  headers: new HttpHeaders({
    'Authorization': `Basic ${basicAuthenticationToken}`
  })
};

@Injectable()
export class APICommunicationService {

  constructor(private http: HttpClient,
              private notificationsService: NotificationsService) {
  }

  getSpacecraftInfo(url: string): Observable<Spacecraft> {
    return this.http.get<Spacecraft>(url, httpOptions)
  }
}

以上是关于在python中验证restframework用户的主要内容,如果未能解决你的问题,请参考以下文章

[Python自学] restframework

[Python自学] restframework

RESTFramework(DRF)进阶篇GenericAPIview-ViewSet类

RESTFramework(DRF)进阶篇GenericAPIview-ViewSet类

[Python自学] restframework (解析器)

验证器 (Validators)