今天我给大家介绍如何写用户信息页面,当我们在登录完后,可以查看自己的用户信息,这里仅介绍登录的情况下。那是如何实现的呢?首先我们在登录的时候,用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',
),
}