Django-Rest frameworw认证和权限

本文介绍了Django-Rest框架中如何进行认证和权限管理,包括已封装好的认证类和权限类,如authenticate_header方法的作用,以及用户URL传入的token认证、请求头认证、多个认证规则的实现。同时,详细展示了认证和权限的应用示例。
摘要由CSDN通过智能技术生成

一、认证已封装好的类

	from rest_framework.authentication import BaseAuthentication
	class BaseAuthentication(object):
		def authenticate(self, request):
			#三种返回结果
			1、 return (user,auth) #当前认证处理后,认证环节结束,不在执行后面的认证了
			2、 return None  #不处理,让后面认证处理
			3、 raise  raise #exceptions.AuthenticationFailed("用户认证失败")


		def authenticate_header(self, request):
			# 验证失败时,返回的响应头WWW-Authenticate对应的值
			pass

	class BasicAuthentication(BaseAuthentication):
		'请求头认证'
		pass

	class SessionAuthentication(BaseAuthentication):
		'session认证'
		pass
	class TokenAuthentication(BaseAuthentication):
		'token认证,' 
		pass

二、权限已封装好的类

from rest_framework.permissions import BasePermission
class BasePermission(object):
	

	message = "权限验证失败" #定制验证的错误信息

	def has_permission(self, request, view):
		'判断是否有权限访问当前请求'
		return True #/ False

	# GenericAPIView中get_object时调用
	def has_object_permission(self, request, view, obj):
		'视图继承GenericAPIView,并在其中使用get_object时获取对象时,触发单独对象权限验证'
		return True # / False

class AllowAny(BasePermission):
	'任何人都能访问,和没设置一样'
	def has_permission(self, request, view):
	return True

class IsAuthenticated(BasePermission):
	'登录后,才能访问'
	def has_permission(self, request, view):
    return request.user and request.user.is_authenticated

class IsAdminUser(BasePermission):
	'只允许,admin用户访问'

class IsAuthenticatedOrReadOnly(BasePermission):
	'登录后,请求方式允许(get , put) 才能访问 '

class DjangoModelPermissions(BasePermission):
	'不清楚'

1、def authenticate_header(self, request): #作用


生成这样的登录界面(浏览器自带的登录界面)



三、认证示例展示

============*****============

        1、用户url传入的token认证     #局部 或 全局类使用

        2、请求头认证

        3. 多个认证规则

        4.认证和权限

============*****============

   1、用户url传入的token认证

in url.py
	from django.conf.urls import url, include
	from web.viewsimport TestView

	urlpatterns = [
		url(r'^test/', TestView.as_view()),
	]


in view.py
	from rest_framework.views import APIView
	from rest_framework.response import Response
	from rest_framework.authentication import BaseAuthentication
	from rest_framework.request import Request
	from rest_framework import exceptions

	token_list = [
	    'sfsfss123kuf3j123',
	    'asijnfowerkkf9812',
	]


	class TestAuthentication(BaseAuthentication):
	    def authenticate(self, request):
	        """
	        用户认证,如果验证成功后返回元组: (用户,用户Token)
	        :param request: 
	        :return: 
	            None,表示跳过该验证;
	                如果跳过了所有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值