登录定制
单点登录、认证集成
======================= 登录界面定制
简单的登录界面定制,可以直接在账户管理 - 公司里面定制logo、背景图片等内容。
如果登录需要额外的逻辑,比如单点登录,则需要自定义登录。
.. contents:: .. sectnum::
更改站点登录界面
如果需要定制个性化的登录界面,可以调整站点的 login_url
::
root.settings['login_url'] = 'http://server.com/@zopen.login:login'
一旦设置,站点登录会跳转到上述登录地址
参考代码:钉钉(zopen.dingding)的登录界面设置(login_qr_setting)
创建个性化的登录界面
参数
创建一个公开的脚本,比如 login
,用作显示登录界面。::
camefrom = request['camefrom']
# todo:显示个性化的登录表单
这个脚本有一个 camefrom
参数,用来标识登录之后跳转到哪里。
如果这个界面,需要提供一个系统默认的登录链接,可以这样得到::
default_login_url = root.login_url(came_from)
参考代码: 钉钉(zopen.dingding)中的 扫码登录(login_qr)
登录
不管你采用何种方法验证登录,一旦登录最终需要做如下2件事情::
# 以认证用户登录
root.login_as(request, userid, logout_url)
# 跳转到指定页面
camefrom=request.get('camefrom', root.absolute_url(request))
request.response.redirect(camefrom)
参考代码: 钉钉(zopen.dingding)的扫描登录(code_login)
登出
如果要登出当前站点,首先需求在之前调用 login_as
的地方传递一个 logout_url
::
root.login_as(request, userid, logout_url=root.absolute_url(request) + '/@xx.xxx:logout')
然后定制这个 logout
登出脚本,通常需要调用登出,然后跳转::
root.logout(request)