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

如何在VS Code中限制后端代码访问,仅开放PyPanel GUI并实现登录管控

本地部署PyPanel GUI的权限控制方案

一、确保后端代码完全保密

  • 打包运行环境,不暴露源码:用pyinstaller把PyPanel应用打包成可执行文件(Windows为.exe,Linux为二进制文件),打包时仅包含运行必需的依赖,核心源码不会被打包进去。也可以直接用panel serve启动服务,但要把核心后端代码放在单独目录,通过文件系统权限限制读取(比如Linux下用chmod 700设置目录仅所有者可访问,Windows下设置文件权限为管理员只读)。
  • 关闭调试模式:启动服务时绝对不能加--debug参数,该模式会暴露代码细节。生产模式启动命令示例:panel serve app.py --port 5006 --num-procs 2。

二、实现登录验证与用户权限管理

1. 基础登录认证

利用PyPanel内置的panel.auth模块实现自定义认证逻辑,避免直接暴露用户信息:

import panel as pn
from panel.auth import User
import bcrypt
import sqlite3

# 初始化本地轻量数据库存储用户信息
conn = sqlite3.connect("panel_users.db")
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS users
             (username TEXT PRIMARY KEY, hashed_pw TEXT, role TEXT, is_banned INTEGER DEFAULT 0)''')
conn.commit()

# 自定义认证类
class PanelAuth:
    def authenticate(self, username, password):
        c.execute("SELECT hashed_pw, role, is_banned FROM users WHERE username=?", (username,))
        user_data = c.fetchone()
        # 检查密码哈希、是否被封禁
        if user_data and not user_data[2] and bcrypt.checkpw(password.encode(), user_data[0]):
            return User(username, roles=[user_data[1]])
        return None

# 初始化认证
auth = PanelAuth()
pn.extension(auth=auth)

# 分角色展示界面
def app_view(user):
    if user.roles[0] == "admin":
        return pn.Column(
            pn.pane.Markdown("### 管理员控制面板"),
            pn.widgets.Button(name="查看用户登录日志", button_type="primary"),
            pn.widgets.Button(name="封禁指定用户", button_type="danger")
        )
    else:
        return pn.pane.Markdown("### 普通用户操作界面\n这里是你的PyPanel GUI功能")

pn.serve(app_view, port=5006)
  • 注意:密码必须用bcrypt这类哈希算法存储,绝对不能明文保存。

2. 管理员监控与封禁功能

  • 扩展数据库表,添加login_time、login_ip字段,每次用户登录时记录相关信息,方便管理员查看访问日志。
  • 在管理员面板添加封禁逻辑:通过输入用户名修改数据库中is_banned字段为1,下次该用户登录时会被认证逻辑拒绝。

三、远程访问配置

  • 局域网内访问:确保部署服务的电脑和同事在同一局域网,告知同事你的电脑IP+服务端口(比如http://192.168.1.100:5006),同时在防火墙开放对应端口。
  • 跨网访问:用免费内网穿透工具(如花生壳、ngrok)映射本地端口,生成公网访问链接,3人使用免费版完全足够。
  • 加密传输:用openssl生成自签名证书,启动服务时添加--ssl-certfile cert.pem --ssl-keyfile key.pem参数,强制HTTPS访问,避免密码等信息被明文传输。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:24:56