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

Laravel登录功能本地正常,线上部署后跳转本地IP问题排查

问题分析与修复方案

核心问题定位

  1. 环境配置错误:线上服务器的.env文件中APP_URL仍保留本地IPhttp://192.168.7.101/school_portal,导致Laravel生成跳转链接时调用了本地地址。
  2. 表单硬编码隐患:登录表单直接写死绝对URL,不仅易出错,还可能因域名不一致引发session失效,触发“Please login first”的未登录校验提示。
  3. Session配置不匹配:线上HTTPS环境下未正确配置session相关参数,导致登录状态无法跨请求保留。

具体修复步骤

1. 更新线上环境配置

修改服务器根目录下的.env文件,替换为线上域名配置:

APP_URL=https://samplesite.edu.jp/school_portal
SESSION_DOMAIN=samplesite.edu.jp
SESSION_SECURE=true # 适配HTTPS环境,确保Cookie仅通过安全协议传输

执行缓存清除命令使配置生效:

php artisan config:clear
php artisan cache:clear

2. 优化表单提交地址

放弃硬编码URL,改用Laravel路由名称生成地址,避免域名变更导致的错误:

<form class="form-horizontal mt-3 form-material" id="loginform" action="{{ route('login-user') }}" method='POST'>
    @if(Session::has('success'))
     <div class="alert alert-success">{{Session::get('success')}}</div>
    @endif
    @if(Session::has('fail'))
     <div class="alert alert-danger">{{Session::get('fail')}}</div>
    @endif
    @csrf

    <!-- The rest of the form (email and app code)-->
</form>

3. 校验登录状态中间件逻辑

确保dashboard路由的登录校验中间件能正确识别session,比如自定义中间件代码:

public function handle(Request $request, Closure $next)
{
    if(!session()->has('loginId')){
        return redirect('/login')->with('fail', 'Please login first');
    }
    return $next($request);
}

同时确认登录后session('loginId')已被正确写入,无存储失败情况。

4. 修复目录权限

确保Laravel的storage和bootstrap/cache目录拥有正确读写权限,避免session无法存储:

chmod -R 755 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache # 根据服务器Web用户调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:52:25