Django通过rest_framework.permissions模块中IsAuthenticated实现身份验证

今天我给大家介绍如何写用户信息页面,当我们在登录完后,可以查看自己的用户信息,这里仅介绍登录的情况下。那是如何实现的呢?首先我们在登录的时候,用ajax请求把用户id和username以及token信息存储到sessionstorage中,这里的 id,username,token是login时候后端实现传到前端的哦,这里不将介绍,我的token是用的django-restframe-jwt实现的,当我把这三个数据存储到sessionstorage之后,我再进行ajax的get请求,把token传到后端进行身份校验,下面开始的请求,前端代码:


$.ajax({
        url:'http://127.0.0.1:8000/userinfo/',
        beforeSend: function(xhr) {
            xhr.setRequestHeader("Authorization",'JWT  '+sessionStorage.token);
        },
        method:'GET',
        data:json_data,
        contentType:'application/json',
        dataType:'json',
        success:function (data) {
           console.log(data)
    }

这里:一定要加上 beforeSend字段,否则不会验证通过,'JWT’这里可以替换自己token加密的方法。
后端用的RetrieveAPIView:

class UserInfoView(RetrieveAPIView):

    permission_classes = (IsAuthenticated,)  # []列表也行,只要可迭代对象就可
    serializer_class = UserInfoSerializers


    def get_object(self):
        print(self.request.user)
        return self.request.user

序列化器:


class UserInfoSerializers(serializers.ModelSerializer):
    """"这是用户信息页面的序列化器"""
    # user_id=serializers.CharField()
    # token=serializers.CharField()
    class Meta:
        model=Users
        fields = ('username','birthday','email','qq','fixtel','phone','first_name','last_name',)

最后:想要用rest_framework.permissions模块中IsAuthenticated实现身份验证,还要再dev.py文件中添上配置:

REST_FRAMEWORK = {
    # 权限认证
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    # 身份认证
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ),
}

猜你喜欢

转载自blog.csdn.net/qq_36455530/article/details/85797307