Skip to content

WIP_v0_9_customize_auth_zh

Neuron Teckid edited this page May 11, 2016 · 2 revisions

v0.9 定制用户身份验证

定制时, 需要根据需求添加数据库中的用户表; 用户表需要有一个整数类型的主键 ID.

若不定制用户身份验证, 则所有页面所有功能均不设限制访问, 后台任务, Redis 命令执行审计等功能关联的用户 ID 均为空值.

定制时, 需要覆盖 App 类型的以下成员函数

# 获取登入页面 URL; 此结果将作为导航栏登入或登入提示页面的超链接
def login_url(self)

# 获取当前用户对象; 该用户对象将被存入 flask.g.user
def get_user(self):
    return None

# 获取当前用户主键 ID
def get_user_id(self)

# 根据用户 ID 渲染一段 HTML; 在显示后台任务记录, Redis 命令执行记录等时, 作为对应的用户信息显示
def render_user_by_id(self, user_id):
    return '<span data-localize="nobody">-</span>'

# 根据用户 ID 渲染一段 HTML; 用户登入后, 此 HTML 将在导航栏显示
#   - user_id: 用户主键 ID, 不会为空值
# 或者, 直接修改 templates/base.html 中 "<li id='nav-current-user'>" 这个标签的内容
def render_me(self)

# 当前用户是否有效; 返回布尔值
def access_ctl_user_valid(self)

# 当前用户是否是高级用户; 在管理 Redis 镜像等功能中需要高级用户权限
def access_ctl_user_adv(self)

# 默认用户 ID; 在执行自动扩容等任务时, 使用此函数返回的用户 ID; 若不覆盖, 该函数返回空值
def default_user_id(self)

如果需要相关的用户信息呈现, 管理页面和响应的 Blueprint, 需要定制时自行实现. 并且覆盖 App.ext_blueprints 将相应的 Blueprint 对象加入返回值.