如何解决使用API在Odoo 13中检索哈希密码
在Odoo 11中,我可以从 res_users 表的 password_crypt 字段中检索哈希密码,但这在 Odoo 13 中不起作用更多。
我使用Odoo 11凭据登录到无法集成在Odoo中的其他应用程序。由于密码似乎只写,因此该身份验证停止工作。现在,我正在寻找一种方法来获取对Odoo密码的读取权限,是否有任何线索使用API做到这一点?
我使用以下python测试代码,但密码字段为空:
import xmlrpclib
common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db,username,password,{})
models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url))
user = models.execute_kw(db,uid,'res.users','search_read',[[['id','=',2]]],{})[0]
print user
有什么想法如何读取仅写哈希密码?
解决方法
由于read()
上的res.users
方法被覆盖以排除某些字段(例如密码字段),因此我(不*)建议在res.users
上创建一个方法这样的SQL读取:
def read_password(self):
self.ensure_one()
self.env.cr.execute("SELECT password FROM res_users WHERE id=%s",self.id)
*免责声明:Odoo隐藏密码字段是有原因的,因此在这里您实际上是在绕过Odoo的安全性。您将需要三重确保此方法是100%安全的。一些想法:
- 添加对正确的API密钥的检查
- 仅允许特定用户执行此方法
- 仅允许某个IP源执行此方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。