登陆功能,所以我们使用django内置admin站点并创建一个管理员.
python manage.py createsuperuser
创建管理员以后,访问admin站点,先修改站点的语言配置
setting
LANGUAGE_CODE = ‘zh-Hans‘ TIME_ZONE = ‘Asia/Shanghai‘ USE_I18N = True USE_L10N = True USE_TZ = True
可以在配置文件settings.py,中配置全局默认的认证方案
写入
REST_FRAMEWORK = { ‘DEFAULT_AUTHENTICATION_CLASSES‘: ( ‘rest_framework.authentication.SessionAuthentication‘, # session认证 ‘rest_framework.authentication.BasicAuthentication‘, # 基本认证 ) }
也可以在每个视图中通过设置authentication_classess属性来设置
from rest_framework.authentication import SessionAuthentication, BasicAuthentication from rest_framework.views import APIView class ExampleView(APIView): # 类属性 authentication_classes = [SessionAuthentication, BasicAuthentication] ...
认证失败会有两种可能的返回值:
401 Unauthorized 未认证
权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。
在通过get_object()获取具体对象时,会进行模型对象访问权限的判断
全局,针对整个站点的所有视图进行权限的判断
针对内部系统,往往才会使用到全局的权限判断,这时候,针对允许游客都可以访问的页面,针对外部系统,大部分页面都是允许游客访问的,就不要进行全局配置了
可以在配置文件中全局设置默认的权限管理类,如
settings
REST_FRAMEWORK = { .... ‘DEFAULT_PERMISSION_CLASSES‘: ( ‘rest_framework.permissions.IsAuthenticated‘, ) }
如果未指明,则采用如下默认配置
‘DEFAULT_PERMISSION_CLASSES‘: ( ‘rest_framework.permissions.AllowAny‘, )
也可以在具体的视图中通过permission_classes属性来设置,如
from rest_framework.permissions import IsAuthenticated from rest_framework.views import APIView class ExampleView(APIView): permission_classes = (IsAuthenticated,) ...
(IsAuthenticated,)是元组,也可用列表
IsAuthenticated 仅通过认证的用户
IsAdminUser 仅管理员用户
IsAuthenticatedOrReadOnly 已经登陆认证的用户可以对数据进行增删改操作,没有登陆认证的游客只能查看数据。
原文:https://www.cnblogs.com/Pythonzrq/p/11767302.html