1- # LinuxDo OAuth Gate - 嵌入式PHP登录认证
1+ # LinuxDo Auth Gate - 嵌入式 PHP 登录认证模块
22
3- 这是一个极简的、可嵌入的 PHP 登录认证模块,专为 [ Linux.do ] ( https://linux.do/ ) 社区设计。您只需在任何现有 PHP 项目的页面顶部引入一个文件,即可为其增加一套完整的、基于数据库的 OAuth 登录系统。
3+ [ ![ LICENSE ] ( https://img.shields.io/badge/license-MIT-green ) ]( https://github.com/wang4386/php-oauth-Linux.Do/blob/main/LICENSE )
44
5- ## 核心特性
5+ ** Auth Gate ** 是一个为 PHP 项目设计的、极简且功能强大的嵌入式登录认证模块,专为 [ Linux.do ] ( https://linux.do/ ) 社区定制。
66
7- - ** 极致简化集成** : 只需一行 ` require_once ` 即可为任何页面添加登录保护。
8- - ** 零配置安装** : 首次访问受保护的页面时,会自动触发一个网页安装向导,无需手动编辑任何文件。
9- - ** 灵活的数据库支持** : 安装时可自由选择使用 ** SQLite** (零配置,推荐) 或 ** MySQL** 。
10- - ** 安全可靠** : 内置 CSRF 攻击防护、使用 ` HttpOnly ` 安全 Cookie,并将用户敏感信息存储在您自己的数据库中。
11- - ** 无缝体验** : 登录后会自动返回用户最初访问的页面。
7+ 它的核心理念是:** 用最简单的方式,为任何新、旧 PHP 项目增加一套安全、可靠且带数据库支持的 OAuth 登录系统。**
128
13- ## 如何使用
9+ 无论您是经验丰富的开发者还是PHP新手,都无需关心复杂的依赖和配置,只需一行代码,即可为您的项目加上登录保护。
1410
15- 1 . ** 复制文件** : 将 ` auth_gate.php ` , ` dlapi.php ` 和整个 ` auth/ ` 目录复制到您的 PHP 项目中。
16- 2 . ** 引入脚本** : 在您想保护的任何 PHP 文件的最顶部,添加以下代码:
11+ ---
12+
13+ ## ✨ 核心特性
14+
15+ - ** 🚀 一行代码集成** : 只需在任何页面顶部 ` require_once 'auth_gate.php'; ` ,即可自动拦截未登录用户。
16+ - ** 🔮 网页安装向导** : 首次使用时会自动进入引导式安装界面,无需手动修改任何配置文件。
17+ - ** 💾 双数据库支持** : 安装时可自由选择使用 ** SQLite** (零配置,推荐) 或 ** MySQL** 存储用户信息。
18+ - ** 💎 “灵动岛”悬浮控件** : 登录后,可在页面左上角显示一个交互式的用户信息控件,外观精致,且可在安装时选择是否启用。
19+ - ** ⚙️ 独立管理后台** : 提供 ` dladmin.php ` 管理页面,允许您在安装后随时通过独立的账号密码登录,修改系统设置。
20+ - ** 🛡️ 安全可靠** : 内置 CSRF 攻击防护,使用 ` HttpOnly ` 安全 Cookie,管理员密码使用 ` password_hash ` 加密存储。
21+
22+ ## 📋 系统要求
23+
24+ - PHP >= 7.4
25+ - PHP 扩展: ` pdo ` , ` curl ` , ` session `
26+ - 如果您选择使用 MySQL,还需要 ` pdo_mysql ` 扩展。
27+
28+ ## 🛠️ 安装与部署
29+
30+ 1 . ** 上传文件** : 将 ` auth_gate.php ` , ` dlapi.php ` , ` logout.php ` , ` dladmin.php ` 和整个 ` auth/ ` 目录上传到您的 PHP 项目中。
31+ 2 . ** 引入脚本** : 在您想保护的任何 PHP 文件的** 最顶部** ,添加以下代码:
1732 ``` php
1833 require_once 'path/to/auth_gate.php';
1934 ```
20- 3. **自动安装**: 在浏览器中访问您刚刚修改的那个文件。您将会看到一个安装向导界面。
21- - **环境检查**: 确认您的服务器满足基本要求。
22- - **选择数据库**: 选择 SQLite 或 MySQL。
23- - **填写配置**: 按照提示填写 OAuth 应用信息 (如果您使用 MySQL,还需填写数据库凭据)。
24- - **完成安装**: 点击按钮,程序会自动生成配置文件 (`auth_config.php`) 和数据库/表。
25- 4. **开始使用**: 安装成功后,刷新页面。您会看到“通过 Linux.Do 登录”的按钮。点击登录,完成认证流程后,您将能看到您原来的页面内容。
35+ 3. **开始安装**: 在浏览器中访问您刚刚修改的那个文件。您将会看到一个安装向导界面。
36+ 4. **完成配置**: 根据页面提示完成环境检查、数据库选择和各项信息的填写。
37+ 5. **⚠️ 安全收尾 (重要!)**: 安装成功后,**请务必从服务器上删除 `install.php` 文件** (`auth/installer.php`),以防被他人再次执行。
38+
39+ 安装完成后,刷新页面,您会看到“通过 Linux.Do 登录”的按钮。
40+
41+ ## 💡 使用方法
2642
27- 此后,任何未登录的用户访问该页面时,都会被登录界面拦截。
43+ ### 1. 保护一个页面
2844
29- ## 在您的代码中访问用户信息及渲染控件
45+ 如上所述,只需在页面顶部引入 `auth_gate.php` 即可。该脚本会自动检查用户的登录状态,如果未登录,则会显示登录界面并终止后续代码的执行。
3046
31- 在 `require_once 'auth_gate.php';` 这一行之后,如果用户已登录,您可以随时调用 `get_current_auth_user()` 函数来获取当前用户的信息。
47+ ### 2. 显示悬浮控件和用户信息
3248
33- 此外,您还需要在页面的 HTML 中调用 `render_auth_widget()` 函数来显示悬浮控件 。
49+ 为了获得最佳体验,您需要手动调用一个函数来渲染“灵动岛”控件 。
3450
35- **示例:**
51+ - `get_current_auth_user()`: 如果用户已登录,调用此函数可以获取一个包含用户信息的数组。
52+ - `render_auth_widget()`: 调用此函数来输出控件的 HTML, CSS 和 JavaScript。**推荐在 `</body >` 标签前调用。**
3653
54+ **完整示例:**
3755```php
3856<?php
3957// 1. 在页面最顶部引入认证模块
@@ -69,7 +87,7 @@ require_once 'auth_gate.php';
6987</html >
7088```
7189
72- ## 后台管理
90+ ## 🧑💻 后台管理
7391
7492安装完成后,您可以访问 ` https://你的域名/dladmin.php ` 来进入管理后台。
7593
@@ -80,14 +98,17 @@ require_once 'auth_gate.php';
8098- 是否启用悬浮用户控件
8199- 重设管理员密码
82100
83- ## 文件结构
101+ ## 📁 文件结构
84102
85103- ` auth_gate.php ` : ** (入口文件)** 您唯一需要 ` require ` 的文件。
86- - ` dlapi.php ` : 处理来自 Linux.do 的 OAuth 回调,您无需直接访问或修改它。
104+ - ` dlapi.php ` : 处理来自 Linux.do 的 OAuth 回调。
105+ - ` logout.php ` : 处理用户登出逻辑。
106+ - ` dladmin.php ` : 管理员后台。
87107- ` auth/ ` : 存放所有模块化逻辑的目录。
88- - ` installer.php ` : 网页安装向导的逻辑 。
108+ - ` installer.php ` : ** (安装后需删除) ** 网页安装向导 。
89109 - ` database.php ` : 数据库连接逻辑 (MySQL/SQLite)。
90110 - ` functions.php ` : 核心辅助函数。
91111 - ` ui.php ` : 渲染登录页、错误页等HTML界面。
92- - ` auth_config.php ` : ** (自动生成)** 存储所有配置,请勿手动修改,并建议将其加入 ` .gitignore ` 。
93- - ` auth.sqlite ` : ** (自动生成)** 如果您选择使用 SQLite,这是您的数据库文件。
112+ - ` widget.php ` : “灵动岛”悬浮控件的全部代码。
113+ - ` auth_config.php ` : ** (自动生成)** 存储所有配置,请勿手动修改,并强烈建议将其加入 ` .gitignore ` 。
114+ - ` auth.sqlite ` : ** (自动生成)** 如果您选择使用 SQLite,这是您的数据库文件。
0 commit comments