经常有外部系统请求odoo的数据,且需要身份认证。
这时候我门可以自己造一个登录接口。验证成功则返回odoo生成的session
@http.route('/web/login/outapi', type='http', auth="none", csrf=False)
def web_login_outapi(self, redirect=None, **kw):
ensure_db()
if request.httprequest.method == 'POST':
old_uid = request.uid
try:
uid = request.session.authenticate(
request.session.db, request.params['login'], request.params['password'])
return json.dumps({'status': 'success', 'code': 200, 'session_id': request.session.sid})
except odoo.exceptions.AccessDenied as e:
return json.dumps({'status': 'success', 'code': 404, 'msg': "用户名或密码错误"})
else:
return json.dumps({'status': 'faild', 'code': 400, 'msg': '请求方式非Post,拒绝请求'})
当我拿到session 之后 就可以直接用session去请求odoo内的任何方法。
请求的时候 在请求header 加上参数
headers = {'X-Openerp-Session-Id': session_id}