统一认证(SSO)接入指南
网站所有需要登录的系统(账本、邮箱、知识库管理区、社员主页编辑、AI 对话身份、博客互动等)共用一个统一认证网关。本文说明接入方式与权限体系。
认证方式
基于 Cookie(auth_token) + 服务端校验:
1. 登录页 `/zhangben/auth/` 登录后,浏览器获得 **auth_token** Cookie(域 hfyzdns.cn,路径 /,HttpOnly+Secure)
2. 站内任意页面/接口凭 Cookie 识别登录状态
3. **校验接口**:`POST /zhangben/auth/api.php?action=me` → `{logged_in, user, display, avatar}`
登录与回跳
- 登录页:`/zhangben/auth/`
- 回跳:`/zhangben/auth/?redirect=/目标路径`(登录成功跳回)
- 退出:`POST /zhangben/auth/?action=logout`(同时清 wiki 会话)
三种接入模式(SDK 用法)
A. 纯前端页面(如 AI 助手 tts.html) ```js const r = await fetch('/zhangben/auth/api.php?action=me', { method:'POST', credentials:'include' }); const d = await r.json(); if (d.logged_in) { /* 显示用户名/头像,解锁社员功能 */ } ```
B. Python 后端服务(如 chat-server.py / create-server.py) ```python # 服务端统一通过共享校验模块验证 auth_token(实现细节见管理区运维文档,不公开) from auth_utils import resolve_user tok = parse_cookie('auth_token') # 从请求 Cookie 取 user = resolve_user(tok) # 返回用户名或 None(服务端可信身份) ```
C. PHP 服务(账本/邮箱等,api.php 内置) ```php $tok = $_COOKIE['auth_token'] ?? ''; $u = validateToken($tok); 返回用户名或 null ``` ===== 权限分级 ===== * 游客:无 auth_token → 公开内容(公开 wiki、AI 基础功能) * 社员:任意账号 → 无限 AI 对话、万念造物、本人主页编辑、wiki 社员专区 * 管理层:role=manager → wiki 管理区(private:*) * 管理员:role=admin → 全部权限、批量管理(zhangben admin) ===== 相关系统对接状态 ===== * 已接入:账本、邮箱、wiki(autologin)、AI 助手(身份/造物)、博客互动、社员主页、签到 * 资料字段(profiles.json):display 昵称 / group 职务组 / title 头衔 / year 届别 / photo 头像 / motto 签名 > ⚠️ 安全:auth_token 是敏感凭据,禁止写进前端代码或日志;权限判断必须服务端完成(前端传参不可信)。 — ← 返回知识库首页