Laravel执行store方法后自动登出且未存储数据问题求助
Laravel提交艺术运动新增表单自动登出问题修复方案
问题原因及修复步骤
- 1. 修复文本域重复name属性错误
你前端表单的textarea标签定义了两个name属性,后定义的name="content"会覆盖之前的name="deskripsi_art",导致后端接收不到deskripsi_art字段触发必填验证失败。
修改前代码:
<textarea name="deskripsi_art" class="form-control @error('deskripsi_art') is-invalid @enderror" name="content" rows="5" id="deskripsi" placeholder="Masukkan Deskripsi Postingan">{{ old('content') }}</textarea>
修改后代码:
<textarea name="deskripsi_art" class="form-control @error('deskripsi_art') is-invalid @enderror" rows="5" id="deskripsi" placeholder="Masukkan Deskripsi Postingan">{{ old('deskripsi_art') }}</textarea>
- 2. 修复控制器重定向方法调用错误
redirect()->route()方法接收的参数是路由别名,不是路由URI,你当前传的/backend/blog是路由路径,不属于已定义的路由别名,会触发路由不存在异常。
修改前代码:
return redirect()->route('/backend/blog')->with(['message' => 'Data Berhasil Disimpan!']);
两种正确写法二选一即可:
// 写法1:用路由路径跳转 return redirect()->to('/backend/blog')->with(['message' => 'Data Berhasil Disimpan!']); // 写法2:用路由别名跳转 return redirect()->route('blogindex')->with(['message' => 'Data Berhasil Disimpan!']);
错误分支的重定向代码也按相同规则修改。
- 3. 确保模型允许批量赋值
检查ArtMovement模型的$fillable属性,确认你在create方法中用到的所有字段都已加入白名单,否则会触发批量赋值异常,无法写入数据库:
// App\Models\ArtMovement.php protected $fillable = [ 'nama_art', 'foto_art', 'tahun_awal', 'tahun_akhir', 'deskripsi_art', 'tautan_art', 'nama_tautan_art' ];
- 4. 修复CKEditor内容同步问题
CKEditor默认不会自动同步编辑内容到原textarea标签,需要在表单提交时手动触发同步,在页面底部的JS部分添加以下代码:
$('form').submit(function() { for (var instance in CKEDITOR.instances) { CKEDITOR.instances[instance].updateElement(); } });
- 5. 调整上传配置避免请求截断
如果上传的图片过大,超过php.ini配置的post_max_size或upload_max_filesize限制,会导致POST请求被截断,Laravel无法接收到CSRF令牌和会话cookie,就会判定用户未登录,触发登出逻辑。可以修改php.ini配置调高限制:
post_max_size = 20M upload_max_filesize = 20M
- 6. 优化登出路由避免误触发
你当前定义的登出路由为GET请求,容易被爬虫或误访问触发,建议改为POST请求并加上中间件保护:
Route::post('/logout', function() { auth()->logout(); session()->flush(); return Redirect::to('/'); })->middleware('auth')->name('logout');
内容的提问来源于stack exchange,提问作者harlow
相关产品推荐
相关产品推荐

