我希望你没事。我有一个使用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]
...