1Panel部署兰空图床注册添加密钥验证
本文最后更新于 48 天前,其中的信息可能已经过时,如有 错误/失效 请发送邮件到qimeng9420@foxmail.com或留言。

1Panel部署兰空图床注册添加密钥验证

兰空图床项目地址:
https://github.com/lsky-org/lsky-pro

由于图床服务器为云服务器,非自建NAS,维护成本较高,所以在注册页面添加必要的验证很有必要,可是官方又没有默认提供该设置,那就只有我们自行修改编辑代码的方式来实现想要的功能了。

下面七梦以当前最新兰空图床版本V2.1版本为例:

步骤一:

store 方法中添加密钥验证

修改注册逻辑文件(通常位于lsky-pro/data/app/Http/Controllers/Auth/RegisterController.php),在 $request->validate 的验证规则数组中添加 secret_key 字段的验证逻辑,添加密钥验证:

    public function store(Request $request)
    {
        $request->validate([
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'confirmed', Rules\Password::defaults()],
            'secret_key' => ['required', 'string', 'in:YOUR_PREDEFINED_KEY'], // 添加密钥验证规则
        ]);
  • 关键说明:

    • YOUR_PREDEFINED_KEY 替换为你预设的固定密钥(例如 ABC123)。

    • 使用in: 规则确保用户输入的密钥必须与预设值完全匹配。

步骤二:

修改注册表单(前端)

lsky-pro/data/resources/views/auth/register.blade.php 中添加密钥输入字段,添加 注册密钥验证字段 的位置应放在 确认密码字段之后、注册按钮之前,与其他必填字段保持一致的布局风格。以下是具体修改步骤和代码位置:

代码修改位置

在现有 确认密码<div> 块之后,添加以下代码段:

<!-- 在 "Confirm Password" 的 div 结束后添加以下内容 -->
<!-- Secret Key -->
<div class="mt-4">
    <x-label for="secret_key" :value="__('注册密钥')" />

    <x-input id="secret_key" class="block mt-1 w-full" 
             type="text" 
             name="secret_key" 
             required 
             placeholder="请输入注册密钥" />
</div>

完整代码示例(修改后部分)

<!-- Confirm Password -->
<div class="mt-4">
    <x-label for="password_confirmation" :value="__('Confirm Password')" />
    <x-input id="password_confirmation" class="block mt-1 w-full"
             type="password"
             name="password_confirmation" required />
</div>

<!-- ↓↓↓ 新增的密钥输入字段 ↓↓↓ -->
<!-- Secret Key -->
<div class="mt-4">
    <x-label for="secret_key" :value="__('注册密钥')" />
    <x-input id="secret_key" class="block mt-1 w-full" 
             type="text" 
             name="secret_key" 
             required 
             placeholder="请输入注册密钥" />
</div>

<div class="flex items-center justify-end mt-4">
    <a class="underline text-sm text-gray-600 hover:text-gray-900" href="{{ route('login') }}">
        {{ __('Already registered?') }}
    </a>
    <x-button class="ml-4">
        {{ __('Register') }}
    </x-button>
</div>

关键说明

字段命名与后端验证匹配:

  • name="secret_key" 必须与你在 RegisteredUserController.php 中定义的验证字段名一致(参考之前修改的 store 方法中的 'secret_key' 验证规则)。
  • required 属性确保用户必须填写此字段才能提交表单。
  • placeholder="请输入注册密钥" 这个部分可根据需要进行删减,作用是在输入框中显示该内容。

然后重新上载 Docker 容器以生效,会发现访问兰空图床(IP:端口)就已经有注册校验的选项了。

lktc_01.png


修正反向代理配置

因为我直接用1Panel的添加反代网站进行域名反向代理,发现一个问题,网页设置中是强制开启https的,用域名访问发现并没有显示注册密码选项。所以问下全能的AI呗:

根据你的描述,问题出在 域名反向代理的配置未正确处理请求头或参数,导致兰空图床的后端逻辑未正确识别到密钥验证需求。以下是具体原因和解决方案:

原因分析

1.反向代理未传递必要请求头 使用域名反向代理时,若未正确配置 proxy_set_header,兰空图床的Laravel框架可能无法获取原始请求的 HostX-Forwarded-Proto 头,导致应用误判请求来源,进而影响前端表单的渲染逻辑(如密钥字段未显示)。

2.HTTPS强制跳转未生效 如果域名配置了 HTTPS,但反向代理未强制设置 X-Forwarded-Proto 头,Laravel 应用可能仍以 HTTP 协议处理请求,导致前端模板中的逻辑分支(如密钥字段显示)未触发。

3.应用缓存未更新 修改代码或配置后,若未清除 Laravel 的视图缓存或配置缓存,可能导致前端模板未加载最新修改。

解决方案

修正反向代理配置(核心步骤)

关键修改位置

在OpenResty的域名反向代理配置中,在 server 块中,找到以下代码段:

Nginxproxy_set_header Host $host; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
proxy_set_header X-Forwarded-Host $server_name; 
proxy_set_header X-Real-IP $remote_addr; 
...
proxy_set_header X-Forwarded-Proto https;  # 当前硬编码为https

需要修改为

Nginxproxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;  # 动态传递协议(http/https)
修改说明
  1. 修正 X-Forwarded-Protoproxy_set_header X-Forwarded-Proto https; 替换为 proxy_set_header X-Forwarded-Proto $scheme;,动态传递客户端真实协议(HTTP或HTTPS),而非硬编码为 https。这是Laravel识别协议的关键。
  2. 移除冗余头 X-Forwarded-Host proxy_set_header X-Forwarded-Host $server_name; 可能导致与 Host 头冲突,建议删除或保留为 $host
如果觉得本文对您有帮助,可以支持下博主,谢谢啦!!!

留言板 | 博客主页
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇