2016-10-09 6 views
0

Ich habe odoo 8 Controller, der bestimmte Daten zurückgibt, die nur für angemeldete Benutzer zugänglich ist. Die Website befindet sich auf einem anderen Server als odoo. Wie kann ich die Authentifizierung von meiner Seite anfordern (wie auf einem anderen Server erwähnt)?Odoo 8 Controller Authentifizierung vor Ort

p.s. In meiner Entwicklungsumgebung funktioniert alles seit dem Aufruf von localhost/index.html, indem ich einen localhost/getData anfordere (über einen Reverse Proxy zu localhost: 8069/getData for cors). Aber wenn ich auf unsere realen Server setzen sie reagiert es mit einigen fehlenden Sitzungsfehler

Danke

Antwort

1

Sie müssen von der Remote-Server authentifizieren und eine Sitzungs_ID zu erhalten. Sobald Sie dies haben, übergeben Sie es als Cookie mit nachfolgenden Anfragen.

import requests 
from requests import Request,Session 
import json 

b_url = "http://yourodooserver.com" 
# or "http://201.100.100.12:8069" (or whatever the ip is) 
url = "{}/web/session/authenticate".format(b_url) 

db = "<YOURDBNAME>" 
user = "<YOURUSERNAME>" 
passwd = "<YOURPASSWORD>" 

s = Session() 

data = { 
    'jsonrpc':'2.0', 
    'params': { 
     'context': {}, 
     'db': db, 
     'login': user, 
     'password': passwd, 
    }, 
} 

headers = { 
    'Content-type': 'application/json' 
} 

req = Request('POST',url,data=json.dumps(data),headers=headers) 

prepped = req.prepare() 

resp = s.send(prepped) 

session_id = json.loads(resp.text)['result']['session_id'] 

# NOW MAKE REQUESTS AND PASS YOUR SESSION ID 

res = requests.get(b_url + "/your/controller/path",cookies={'session_id':str(session_id)}) 

print(res.text) 
+0

phillipstack ich nehme an, ich kann die gleiche anfrage vom kunden machen? (Client ist Browser)? Scheint großartig, ich werde heute Abend testen und Sie über die Ergebnisse auf dem Laufenden halten. Danke – detroit

+0

Ja, ich sehe keinen Grund, warum Sie diese Anfrage nicht in einer Sprache machen könnten, die die Weitergabe einer Anfrage mit einem Cookie-Attribut unterstützt. –

+0

Ich habe immer noch ein paar Probleme, aber ich kann nicht sehen, dass dies scheitert, da es für mich eher ein odoo-Syntax-Problem war :) Ich werde meinen Korsett reparieren, mittlerweile habe ich ihn als beantwortet markiert. Du hast meinen Phillipstack gerettet! – detroit