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

Laravel路由POST方法提交生成密码请求返回404错误如何解决

问题成因

404错误核心原因

  • 表单未传递uid参数:控制器逻辑中调用User::findOrFail($request->uid)查询用户,但是表单提交时没有携带uid参数,无法匹配到对应用户,Laravel中findOrFail方法查询不到数据时会直接抛出404响应。
  • 路由不匹配:上层路由组前缀为dashboard,子路由组前缀为单数user,最终生成的路由地址为/dashboard/user/generate-app-password-store,如果项目中用户相关路由约定用复数users,会出现路由匹配失败返回404。
  • 路由缓存未更新:如果修改过路由定义后没有清理路由缓存,旧的缓存规则中没有对应路由也会返回404。

额外逻辑缺陷

控制器中随机密码生成逻辑错误:先对随机生成的8位字符串做哈希赋值给app_email_password_store字段,下一行直接用$request->app_email_password_store覆盖该字段值,而请求中根本没有传递该参数,最终会存储空值,完全没有实现生成随机密码的功能。

修复方案

1. 解决404问题

首先在表单中新增隐藏字段传递用户ID,示例如下(请根据你页面的实际用户变量名调整value取值):

<form style="position: relative; left: -15px" action="{{ route("dashboard.users.generate-app-password-store") }}" method="POST">                       
   @csrf
   <!-- 新增隐藏字段传递要操作的用户ID -->
   <input type="hidden" name="uid" value="{{ $user->id }}">
    <button type="submit" class="btn btn-primary float-right mt-2">
        {{ trans("translation.generate-password") }}
    </button>
</form>

如果是路由前缀不匹配的问题,将路由子组的prefix参数改为和约定一致即可,比如改为复数:

Route::group(['prefix' => 'users', 'middleware' => 'checkRole:admin'], function () {
    Route::post('/generate-app-password-store', 'Dashboard\UsersController@generateAppEmailPasswordStore')->name('dashboard.users.generate-app-password-store');
});

如果是路由缓存问题,执行以下命令清理缓存即可:
php artisan route:clear

2. 修复密码生成逻辑

调整控制器代码,删除多余的覆盖赋值逻辑,还可以将生成的明文密码闪存到session方便展示给用户(哈希后的密码不可逆,用户无法从存储值获取明文):

public function generateAppEmailPasswordStore(Request $request)
{
    $user = User::findOrFail($request->uid);
    // 保存明文密码用于后续展示
    $rawPassword = Str::random(8);
    $user->app_email_password_store = Hash::make($rawPassword);
    
    $user->save();  

    // 闪存明文密码到session,前端可以取出展示给用户
    session()->flash('generated_app_password', $rawPassword);
    
    Alert::flash(trans('translation.email-account-created'));

    return redirect()->route('dashboard.users.profile', ['id' => $user->id]);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:06:03