我正在尝试实现我的登录功能,以及它成功登录,问题是我收到此错误,未捕获异常:响应状态:401未授权URL:http://127.0.0.1:8000/scrumboard/Recruteurs/ (我的后端使用Django实现)
login.ts:
onSignin(form: NgForm) {
this.myService.login({username: this.user.username, password: this.user.password})
.subscribe(
data => {
this.router.navigate(['dashboard'])}
);
}
mySercice.ts:
public login(user: any){
const body = JSON.stringify(user);
let headers = new Headers({
'Accept': 'application/json',
'Content-Type': 'application/json',
});
return this.http.post(this.domain+'/api-token-auth/', body, {
headers: headers
})
.map((response: Response) => {
let token = response.json() && response.json().token;
if (token) {
this.token = token;
localStorage.setItem('currentUser', body);
return true;
} else {
return false;
}
});
}
这是我的后端逻辑: settings.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',
),
}
urls.py:
router = DefaultRouter();
router.register(r'Recruteurs', RecruteurViewSet)
urlpatterns = router.urls
api.py:
class RecruteurViewSet(ModelViewSet):
queryset = Recruteur.objects.all()
serializer_class = RecruteurSerializer
permission_classes = (permissions.IsAuthenticated,)
我的所有页面都空白。我做错了什么?
答案 0 :(得分:0)
查看您的帖子并不清楚您是否在发送JWT令牌以及第二个请求。登录并将令牌保存在本地存储中后,请确保在后续请求中正确设置了Authorization标头。
我认为在路由器重定向登录后会向招聘人员发出请求,因此请查看您在仪表板上调用的服务,并确保其正确设置授权标头。
授权标题文档:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization
此外,您可以在Angular中设置拦截器,它会自动将正确的标头附加到每个请求,如果您获得401,则会将用户重定向到登录页面。