Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
3 Replies
8348 Tampilan

Hello Guys. I'm trying to logout out by using this url:
​http://localhost:8069/web/session/logout?sp=Odoo+Dev+TEST&tenantDomain=carbon.super​

Someone know how can I logout by using that string? Because i'm doing an integration by using ws2o, but there is no way to redirect by using other logout url, it must be that one and when I try to use that url, I receive the fallowing error:

test_auth werkzeug: Error on request:
Traceback (most recent call last):
File "/home/lliege/odoo/odoo12/odoo12-env/lib/python3.6/site-packages/werkzeug/serving.py", line 304, in run_wsgi
execute(self.server.app)
File "/home/lliege/odoo/odoo12/odoo12-env/lib/python3.6/site-packages/werkzeug/serving.py", line 292, in execute
application_iter = app(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/server.py", line 409, in app
return self.app(e, s)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/wsgi_server.py", line 128, in application
return application_unproxied(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/wsgi_server.py", line 117, in application_unproxied
result = odoo.http.root(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 1320, in __call__
return self.dispatch(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 1293, in __call__
return self.app(environ, start_wrapped)
File "/home/lliege/odoo/odoo12/odoo12-env/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py", line 220, in __call__
return self.app(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 1488, in dispatch
result = ir_http._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/auth_signup/models/ir_http.py", line 19, in _dispatch
return super(Http, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/web_editor/models/ir_http.py", line 22, in _dispatch
return super(IrHttp, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/http_routing/models/ir_http.py", line 397, in _dispatch
result = super(IrHttp, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/utm/models/ir_http.py", line 26, in _dispatch
response = super(IrHttp, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/odoo/addons/base/models/ir_http.py", line 207, in _dispatch
return cls._handle_exception(e)
File "/home/lliege/odoo/odoo12/odoo/addons/utm/models/ir_http.py", line 31, in _handle_exception
response = super(IrHttp, cls)._handle_exception(exc)
File "/home/lliege/odoo/odoo12/odoo/odoo/addons/base/models/ir_http.py", line 177, in _handle_exception
return request._handle_exception(exception)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 776, in _handle_exception
return super(HttpRequest, self)._handle_exception(exception)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 314, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/home/lliege/odoo/odoo12/odoo/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/home/lliege/odoo/odoo12/odoo/odoo/addons/base/models/ir_http.py", line 203, in _dispatch
result = request.dispatch()
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 835, in dispatch
r = self._call_function(**self.params)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 346, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 941, in __call__
return self.method(*args, **kw)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 519, in response_wrap
response = f(*args, **kw)
TypeError: logout() got an unexpected keyword argument 'sp' - - -

Avatar
Buang
Penulis Jawaban Terbai

I found a way to bypass those parameters by just adding undefined number of parameters on logout function.

On addons/web/controllers, just add **kwargs on def:

@http.route('/web/session/logout', type='http', auth="none")    

def logout(self, redirect='/web', **kwargs):        

request.session.logout(keep_db=True)        

return werkzeug.utils.redirect(redirect, 303)

Or you can just overwrite the function with 

import odoo.addons.web.controllers.main as mainclass 
Home2(main.Home):
@http.route('/test', type="http", auth="none")
def index(self):
return "<div>This is my new home page.</div>"
Avatar
Buang
Jawaban Terbai

Hi Rafael,

You can directly logout by using following url

http://localhost:8069/web/session/logout

Thanks.


Avatar
Buang
Penulis

I said I need to use this URL specifically: ​http://localhost:8069/web/session/logout?sp=Odoo+Dev+TEST&tenantDomain=carbon.super​

It must be that url because of the wso2 integration!

Post Terkait Replies Tampilan Aktivitas
1
Mei 19
6394
0
Okt 23
1533
2
Agu 23
2063
0
Des 19
3954
1
Nov 19
10194