【问题标题】:Django API Rest Framework and Angular 7 Authentication with jwt token使用 jwt 令牌的 Django API Rest Framework 和 Angular 7 身份验证
【发布时间】:2019-04-22 04:02:59
【问题描述】:

我使用 Django Rest Framework 作为后端,使用 Angular 7 作为用户界面。我正在尝试为我的单页应用程序创建一个登录页面并使用 jwt 令牌进行身份验证。我已经管理了后端并且它可以工作。每当我去 /api-token-auth/ 并输入凭据时,我都会在其余框架界面中获得一个令牌。 前端部分虽然困扰着我。我创建了登录组件、授权服务和令牌拦截器。我相信我做了正确的调整,但是每当我尝试从角度登录时,这个错误就会出现在 django 命令提示符中。

“错误请求:/api-token-auth/ [19/Nov/2018 20:16:16]”POST /api-token-auth/ HTTP/1.1" 400 68 Traceback(最近一次调用最后一次):
文件“C:\Python36\lib\wsgiref\handlers.py”,第 138 行,运行中 self.finish_response() 文件“C:\Python36\lib\wsgiref\handlers.py”,第 180 行,finish_response self.write(data) 文件“C:\Python36\lib\wsgiref\handlers.py”,第 274 行,写入 self.send_headers() 文件“C:\Python36\lib\wsgiref\handlers.py”,第 332 行,在 send_headers self.send_preamble() 文件“C:\Python36\lib\wsgiref\handlers.py”,第 255 行,在 send_preamble ('日期: %s\r\n' % format_date_time(time.time())).encode('iso-8859-1') 文件 “C:\Python36\lib\wsgiref\handlers.py”,第 453 行,在 _write 结果 = self.stdout.write(data) 文件“C:\Python36\lib\socketserver.py”,第 775 行,写入 self._sock.sendall(b) ConnectionAbortedError: [WinError 10053] 已建立的连接被主机中的软件中止 机器 [2018 年 11 月 19 日 20:16:16]“POST /api-token-auth/HTTP/1.1”500 59 ---------------------------------------- 处理来自 ('127.0 的请求时发生异常.0.1', 51566) 回溯(最近 最后调用):文件“C:\Python36\lib\wsgiref\handlers.py”,第 138 行,在 跑步 self.finish_response() 文件“C:\Python36\lib\wsgiref\handlers.py”,第 180 行,finish_response self.write(data) 文件“C:\Python36\lib\wsgiref\handlers.py”,第 274 行,写入 self.send_headers() 文件“C:\Python36\lib\wsgiref\handlers.py”,第 332 行,在 send_headers self.send_preamble() 文件“C:\Python36\lib\wsgiref\handlers.py”,第 255 行,在 send_preamble ('日期: %s\r\n' % format_date_time(time.time())).encode('iso-8859-1') 文件 “C:\Python36\lib\wsgiref\handlers.py”,第 453 行,在 _write 结果 = self.stdout.write(data) 文件“C:\Python36\lib\socketserver.py”,第 775 行,写入 self._sock.sendall(b) ConnectionAbortedError: [WinError 10053] 已建立的连接被主机中的软件中止 机器

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件 “C:\Python36\lib\wsgiref\handlers.py”,第 141 行,运行中 self.handle_error() 文件“C:\Python36\lib\site-packages\django\core\servers\basehttp.py”,行 86,在handle_error中 super().handle_error() 文件“C:\Python36\lib\wsgiref\handlers.py”,第 368 行,在 handle_error self.finish_response() 文件“C:\Python36\lib\wsgiref\handlers.py”,第 180 行,finish_response self.write(data) 文件“C:\Python36\lib\wsgiref\handlers.py”,第 274 行,写入 self.send_headers() 文件“C:\Python36\lib\wsgiref\handlers.py”,第 331 行,在 send_headers 如果不是 self.origin_server 或 self.client_is_modern():文件“C:\Python36\lib\wsgiref\handlers.py”,第 344 行,在 client_is_modern return self.environ['SERVER_PROTOCOL'].upper() != 'HTTP/0.9' TypeError: 'NoneType' object is not subscriptable

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件 “C:\Python36\lib\socketserver.py”,第 639 行,在 process_request_thread 中 self.finish_request(request, client_address) 文件“C:\Python36\lib\socketserver.py”,第 361 行,在 finish_request self.RequestHandlerClass(request, client_address, self) 文件“C:\Python36\lib\socketserver.py”,第 696 行,在 init self.handle() 文件“C:\Python36\lib\site-packages\django\core\servers\basehttp.py”,行 154,在手柄中 handler.run(self.server.get_app()) 文件“C:\Python36\lib\wsgiref\handlers.py”,第 144 行,运行中 self.close() 文件“C:\Python36\lib\wsgiref\simple_server.py”,第 35 行,关闭 self.status.split(' ',1)[0], self.bytes_sent AttributeError: 'NoneType' object has no attribute 'split'"

我真的想了解基于此错误发生的情况。有人有想法吗?谢谢

更新

我从未导入过 FormsModul,显然这是导致问题的原因。

【问题讨论】:

    标签: django angular django-rest-framework jwt


    【解决方案1】:
    line 35, in close self.status.split(' ',1)[0], self.bytes_sent
    AttributeError: 'NoneType' object has no attribute 'split'
    

    由于某种原因,self.status属性返回None,无法拆分,从而导致错误。

    【讨论】:

    • 显然问题出在我的 app.module.ts 中没有导入的 FormsModule。感谢您的回答
    猜你喜欢
    • 2021-05-22
    • 2020-09-12
    • 2019-01-01
    • 2019-02-27
    • 2019-05-18
    • 2018-06-22
    • 2020-04-10
    • 2015-06-01
    • 2015-12-15
    相关资源
    最近更新 更多