經常有外部系統請求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}