You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Panel应用配置多用户权限并提供专属内容模板?

Panel应用权限控制与500错误修复方案

错误原因梳理

  1. 参数不匹配:render_content函数定义接收user参数,但内部误用了未定义的username变量
  2. 拼写错误:凭证字典变量名credendtials多打了一个t,正确应为credentials
  3. auth数据处理错误:request.auth返回的是(用户名, 密码)的元组,直接传入函数会导致判断逻辑失效

修正后的完整代码

import panel as pn
pn.extension()

# 预定义用户专属内容
bal_content = pn.pane.Markdown("bal的专属内容")
jobb_content = pn.pane.Markdown("jobb的专属内容")

# 权限凭证(用户名:密码)
credentials = {'bal':'bal','jobb':'jobb'}

# 登出按钮
logout_btn = pn.widgets.Button(name="Log out")
logout_btn.js_on_click(code="""window.location.href = './logout'""")

def render_content(request):
    # 从request.auth中提取用户名
    username = request.auth[0] if request.auth else None
    if username == 'bal':
        return pn.Column(bal_content, logout_btn)
    elif username == 'jobb':
        return pn.Column(jobb_content, logout_btn)
    else:
        return pn.Column(pn.pane.Markdown("未授权访问"), logout_btn)

# 启动服务,传入请求处理函数
pn.serve(render_content, basic_auth=credentials, cookie_secret='my_secret_key_keep_it_safe')

关键实现说明

  • 动态内容渲染:通过pn.serve接收请求对象,从request.auth中解析已验证的用户名,根据用户名返回对应专属内容
  • 权限控制:basic_auth参数传入凭证字典,自动处理HTTP基础认证,未通过验证的用户会被拦截
  • 登出逻辑:通过JS点击事件跳转至./logout路径,Panel会自动处理登出并清除认证Cookie

内容的提问来源于stack exchange,提问作者pilo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:06:19