大道至简,新一代企业应用无栈开发

平台之上,一种语言,可视化、脚本化、全端一体化开发

登录定制

单点登录、认证集成

======================= 登录界面定制

简单的登录界面定制,可以直接在账户管理 - 公司里面定制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)