{
"id": null,
"jsonrpc": "2.0",
"result": {
"web_tours": [ ],
"user_companies": false,
"username": "admin",
"partner_id": ,
"name": "Administrator",
"is_system": true,
"uid": ,
"session_id": "968456939a37f2899d0243a241597caa222e7d48",
"server_version_info": [
,
,
,
"final",
,
""
],
"web.base.url": "http://www.XXX.top",
"server_version": "11.0",
"user_context": {
"lang": "en_US",
"uid": ,
"tz": false
},
"currencies": {
"": {
"symbol": "€",
"position": "after",
"digits": [
, ]
},
"": {
"symbol": "$",
"position": "before",
"digits": [
, ]
}
},
"company_id": ,
"is_superuser": true,
"db": "Odoo_DB"
}
}

以上是odoo在用户登录成功之后返回给客户端的session值得信息,返回这段值得代码在odoo/addons/web/models/ir_http.py这个文件里,具体的方法是

 def session_info(self):
user = request.env.user
display_switch_company_menu = user.has_group('base.group_multi_company') and len(user.company_ids) >
version_info = odoo.service.common.exp_version()
return {
"session_id": request.session.sid,
"uid": request.session.uid,
"is_system": request.env.user._is_system(),
"is_superuser": request.env.user._is_superuser(),
"user_context": request.session.get_context() if request.session.uid else {},
"db": request.session.db,
"server_version": version_info.get('server_version'),
"server_version_info": version_info.get('server_version_info'),
"name": user.name,
"username": user.login,
"company_id": request.env.user.company_id.id if request.session.uid else None,
"partner_id": request.env.user.partner_id.id if request.session.uid and request.env.user.partner_id else None,
"user_companies": {'current_company': (user.company_id.id, user.company_id.name), 'allowed_companies': [(comp.id, comp.name) for comp in user.company_ids]} if display_switch_company_menu else False,
"currencies": self.get_currencies(),
"web.base.url": self.env['ir.config_parameter'].sudo().get_param('web.base.url', default=''),
}

那么session_id有时在何时产生的,又是保存到哪里,有效时间是多少呢?

这些问题这2篇文章给了不错的回答,odoo web机制浅析odoo Session有效期

看完这两篇文章之后,我们可以简单的认为Session就是一个唯一的字符串,向GUID一样,然后我们给这个唯一的字符串设定一段有效时间,不管是一周还是一个月,这完全由程序开发人员设定一个规则。odoo是把Session字符串保存在磁盘上了,其实我们也可以产生唯一的字符串保存到数据库中,然后设置个过期时间,方式是多样的,关键还是理解Session到底是怎么一回事。

最新文章

  1. swift-字典
  2. 嵌入式Linux驱动学习之路(二十四)Nor Flash驱动程序
  3. Newtonsoft.Json异常处理
  4. 特许金融分析师 (CFA) 持证人现在一般在做什么工作?职业分布是怎样的?
  5. c++中的243、251、250错误原因
  6. textbox不支持Ctrl+A
  7. 使用synchronize同步关键字来同步代码快
  8. 用CAGradientLayer实现渐变色动画
  9. TCP closing a connection
  10. js的eval函数解析后台返回的json数据时为什加上圆括号eval("("+data+")"),而HTML页面定义的数据不用
  11. 从 JavaScript 到 TypeScript
  12. JDK 8 安装及配置
  13. Shell - 文本处理
  14. SeaweedFS上手使用指南
  15. InfluxDB v1.6.4 下载
  16. PowerBuilder编程新思维1:扩展(Lua)
  17. iOS runtime执行时具体解释
  18. [python]去掉 unicode 字符串前面的 u(转)
  19. 服务器报错 500,请确保 ASP.NET State Service(ASP.NET 状态服务)已启动
  20. 4. STL编程四

热门文章

  1. Eclipse For JavaSE安装、配置、测试
  2. Android studio 下的SDK Manager只显示已安装包的情况
  3. uni-app 子组件如何调用父组件的方法
  4. Kotlin Native
  5. TypeScript的概要和简介
  6. SSL里的certificate格式资料小结
  7. 记一次坑爹的ORA-01152&ORA-01110错误
  8. mssql 怎么配置指定的表 不允许删除数据?
  9. STL之迭代器(iterator)
  10. 自动化测试基础篇--Selenium鼠标键盘事件