如何在 Django 中使用 Tornado 的 WebSocket 并做请求的用户验证识别 - Oejia 技术栈,企业方案分享、Odoo顾问
Oejia 技术栈
主页
分享
微信模块
索引
关于
订阅
编辑器
登录
如何在 Django 中使用 Tornado 的 WebSocket 并做请求的用户验证识别
admin
on 2016-09-21 13:27:09
案例入口启动代码如下 ``` wsgi_app = tornado.wsgi.WSGIContainer(django_wsgi_app) tornado_app = tornado.web.Application( [ (ur'/ws_logging', SocketLogging), ('.*', tornado.web.FallbackHandler, dict(fallback=wsgi_app)), ], **tornado_settings) server = tornado.httpserver.HTTPServer(tornado_app) server.listen(port) tornado.ioloop.IOLoop.instance().start() ``` django_wsgi_app 的获取 ``` import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apps.settings") django_wsgi_app = get_wsgi_application() ``` 客户端打开一个包含 websocket 的载体页面当然可以利用 Django 的 auth 模块做用户识别,但是客户端 websocket 请求到 tornado 的 websocket_hander 的交互过程怎么进行鉴权与用户识别是个问题,下面的方案可以解决! ``` class SocketLogging(websocket.WebSocketHandler): ... def get_current_user(self): self.session_key = self.get_cookie('sessionid') session = session_engine.SessionStore(self.session_key) r = DummyRequest() r.session = session self.user = auth.get_user(r) return self.user ``` 原来可以通过 sessionid 这个cookie 再调用 Django 相关函数就可以获取到当前用户,因为是同一个域,所有普通的http请求和websocket请求他们的cookie是共用的
Information
如何在 Django 中使用 Tornado 的 WebSocket 并做请求的用户验证识别
http://www.oejia.net/blog/2016/09/21/django_tornado_websocket.html
http://www.oejia.net/raw/2016/09/21/django_tornado_websocket.md
admin
on 2016-09-21 13:27:09
Tag
Related
2022-02-03 :
用 VIM 操作 BOM 标记
2021-08-31 :
Odoo 商城模块 Oejia_weshop v0.2.4 发布,可融合POS构建线上线下一体化会员系统
2020-03-31 :
融合企业微信的SCRM模块使用介绍
2019-05-30 :
小程序商城模块 Oejia_weshop v0.1.4 发布,支持Odoo账号绑定登录及价格表机制
2019-01-30 :
Odoo后端性能优化之—取消当访问页面404时对ir.attachment表的查询
2018-10-24 :
微信模块 Oejia_wx v0.5.4 发布,增加小程序客服聊天支持,支持 Odoo12
2018-09-13 :
Odoo 小程序商城模块
2018-05-04 :
微信模块 Oejia_wx v0.5.1 发布,优化聊天会话缓存及多db模式的支持
2018-05-04 :
基于 Odoo 微信模块实现的微信客服系统
2017-10-24 :
Odoo 前端对象 options 介绍
January 2023
Sun
Mon
Tue
Wed
Thu
Fri
Sat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
分类
Odoo (121)
DjangoX (13)
后端HTTP (7)
YouMd (4)
移动开发 (4)
Django (3)
前端 (2)
JS (2)
公告说明 (2)
Python (1)
Nginx (1)
桌面UI (1)
异常处理 (1)
官方公众号
关注公众号实时咨询我们
About This Entry
Odoo 模型定义详解
DjangoX 站点级配置介绍
About This Blog
main index
to find recently
archives
to find all
标签
微信模块发布记录
微信模块
小程序商城
Python
Web
Http
客服系统
OE商城
Cordova
审批OA
HTML5
Markdown
解析
DjangoX
ExtJS
示例
Excel
JS
新年
PyQT
扩展开发
YouPBX
服系统
最近发布
SyntaxError: Failed to execute 'querySelectorAll' on 'Element': 'footer:not(field footer)' is not a valid selector
企业微信错误码:60020 的处理
在 Odoo 中使用 WebSocket 并兼容Odoo的Session会话识别
Odoo 让 server action 显示到指定的视图上
Odoo 增加树形列表视图的支持
Odoo 16 正式发布时间
Odoo 企业微信之日历、日程的同步
钉钉消息通知及审批功能的使用说明
Odoo 客户管理之微信定位模块
AccessError: (u'Database fetch misses ids ((1,))) and has extra ids (1), may be caused by a type incoherence in a previous request'
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子