odoo10实现单点登陆绕过登陆集成页面
背景:由于需要集成odoo平台在其他页面,需要绕开登陆。
解决办法:开辟一个自动登陆的路由用与集成页面。
1、修改web模块中controller/main.py文件,在class名字为home中添加登陆路由:
dbname:指定登陆数据库名称
username:用户名
password:密码
1 @http.route('/web/login_(自定义路由名称)', type='http', auth="none")
2 def web_login_(方法名称)(self, redirect=none, **kw):
3 if request.httprequest.method == 'get':
4 old_uid = request.uid
5 uid = request.session.authenticate('dbname', 'username', 'password')
6 if uid is not false:
7 request.params['login_success'] = true
8 if not redirect:
9 redirect = '/web'
10 return http.redirect_with_hash(redirect)
11 request.uid = old_uid
12 values['error'] = _("wrong login/password")
13 return request.render('web.login', values)
2、访问路由(访问前需要先调用清除cookie的方法)。在class名字为session中添加页面访问路由的方法
@http.route('/web/(访问路由名称)', type='http', auth="none")
def logout_login(self, redirect='/web'):
request.session.logout(keep_db=true)
return http.redirect_with_hash('/web/login_(自定义路由名称)') #从定向到上面定义的路由名称
3、重启odoo、访问第二步中的路由就能直接进入odoo