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

Laravel中密码更新后登出无法显示状态消息的问题

问题解决:密码更新后登出无法显示状态消息

问题现象

  • 密码修改成功后执行Auth::logout(),跳转至登录页面后无法显示“密码已更新”的状态消息,但密码确实已修改完成
  • 密码不匹配等错误场景可正常返回并显示SweetAlert提示
  • 其余代码逻辑均正常运行

问题原因

代码中跳转至user.logout路由,而该路由通常会再次执行登出逻辑(包含session()->invalidate()销毁会话),导致之前通过->with('status')存入会话的状态消息被清空,最终登录页面无法读取到该消息。

解决方案

修改控制器中的成功分支代码,直接跳转至登录页面而非logout路由,同时传递状态消息:

public function UserUpdatePassword(Request $request)
{
    $validateData = $request->validate([
        'oldpassword' => 'required',
        'password' => 'required|confirmed',
    ]);

    $hashedPassword = Auth::user()->password;
    if(Hash::check($request->oldpassword, $hashedPassword)){
       $user = User::find(Auth::id());
       $user->password = Hash::make($request->password);
       $user->save();

       Auth::logout(); 
       // 直接跳转至登录路由,传递状态消息
       return redirect()->route('login')->with('status','密码已成功更新');   

    } else{
        Alert::warning('密码不匹配','当前密码错误或确认密码不一致');
        return redirect()->back();
    }
}

补充说明

  • ->with('key', 'value')会将数据存入新会话的闪存中,登录页面的@if(session('status'))逻辑可正常读取
  • 避免重复执行登出操作,防止会话被多次销毁导致消息丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:30:55