尽管用户已登录,但该用户是匿名的


我希望你没事。我有一个使用vue和django-rest的项目,我已经通过djoser完成了身份验证。当用户登录时,会设置一个令牌,用户可以正确登录网站,但在views.py中,当我在get_queryset(self(函数中使用self.request.user时,它表示用户是匿名的。如果有人给我一个建议,我会感谢的。谢谢

登录vue-js文件中的axios代码:

login(){

axios.defaults.headers.common["Authorization"] = ""
localStorage.removeItem("token")
const formData = {
username: this.username,
password: this.password
}
axios.post("/api/v1/token/login/", formData)
.then(response => { 
const token = response.data.auth_token
this.$store.commit('setToken', token)

axios.defaults.headers.common["Authorization"] = "Token " + token
localStorage.setItem("token", token)  
})
.catch(error=>{
console.log(error.response.data)
})
}

在设置.py中,我输入了:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES':(
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
)

}

和我的两行关于djoser的urls.py:

path('api/v1/', include('djoser.urls')),
path('api/v1/', include('djoser.urls.authtoken')),

您需要设置permission_classes属性。

from rest_framework.permissions import IsAuthenticated
class ComplaintViewSet(viewsets.ModelViewSet):
serializer_class = ComplaintSerializer
queryset = Complaint.objects.all()
permission_classes = [IsAuthenticated]
...

最新更新