如何在SmItH197的SteamAuth系统中仅允许指定SteamID登录?
限制特定SteamID登录SmItH197的SteamAuthentication系统
嘿,我来帮你搞定这个问题!要限制只有特定SteamID能登录这套SteamAuth系统,其实只需要在验证流程里加个简单的校验逻辑就行,步骤很清晰:
核心思路
在用户通过Steam官方验证、系统获取到用户SteamID之后,立刻检查这个ID是否在你预先设定的「允许登录列表」里。如果不在,就终止登录流程,拒绝用户访问。
具体操作步骤
找到回调处理文件
打开项目里的callback.php文件——这是Steam验证完成后,系统处理用户信息的核心文件。定义允许登录的SteamID列表
在文件开头(或者验证逻辑之前),定义一个包含所有允许登录SteamID的数组。记得替换成你实际需要的ID:// 替换成你想要允许登录的SteamID(格式是765开头的完整ID) $allowed_steam_ids = [ "76561198012345678", "76561198087654321" ];获取当前用户的SteamID
在系统完成Steam验证的代码之后(比如调用$steam->validate()成功后),获取当前登录用户的SteamID:// 获取当前验证通过的用户SteamID $current_steam_id = $steam->getSteamID();添加权限校验逻辑
紧接着加入判断:如果当前用户的SteamID不在允许列表里,就销毁会话并跳转到拒绝页面(或者首页):// 检查是否在允许列表中 if (!in_array($current_steam_id, $allowed_steam_ids)) { // 销毁会话,清除登录状态 session_destroy(); // 跳转到首页并带上错误标识,方便前端提示 header("Location: index.php?error=unauthorized"); exit; // 终止后续代码执行 }
额外提示
- SteamID格式要正确:确保你用的是Steam的64位ID(765开头的那种),不是用户自定义的URL昵称或者短ID。
- 动态管理列表:如果需要批量管理允许的ID,可以把列表存在数据库里,用SQL查询替换静态数组,比如:
// 示例:从数据库获取允许的ID列表 $allowed_steam_ids = $pdo->query("SELECT steam_id FROM allowed_users")->fetchAll(PDO::FETCH_COLUMN); - 错误提示优化:可以在首页判断
$_GET['error']参数,如果是unauthorized,就显示「抱歉,您没有权限登录此系统」的提示。
内容的提问来源于stack exchange,提问作者friend
相关产品推荐
相关产品推荐

