不少公司會有內部單點登陸系統,採用Odoo系統的公司可能就有須要將Odoo接入公司內部的單點登陸系統。web
實現的思路很簡單,因爲每一個公司的系統不同,代碼僅做示例說明。url
首先,重寫Odoo登陸界面:spa
<template id="qunar_qsso.login" name="QSSO" inherit_id="web.login"> <xpath expr="//form[@role='form']" position="replace"> <t t-call="web.database_select"/> <!-- 添加一個登陸按鈕,接入特定sso登陸接口--> ........ <p/> <p class="alert alert-danger" t-if="error"> <t t-esc="error"/> </p> <p class="alert alert-success" t-if="message"> <t t-esc="message"/> </p> <input type="hidden" name="redirect" t-att-value="redirect"/> </xpath> </template>
而後, 重寫驗證的controller3d
@http.route('/sso',type="http",auth='public',website=True)
def qsso(self,*args,**kargs):
qcontext = request.params.copy()
if qcontext.get('token'):
#check if the token is valid.
#本身的驗證方式和邏輯
url ='/web'
request.params['login']=user
request.params['password']=False
return super(QSSO,self).web_login(*args,**kargs)
界面示例code