douping5015 2018-04-14 21:54
浏览 57

登录后的Laravel flash消息未显示在归属路由中

First of all, I checked out this question: Flash message after login laravel, but it does not solve my issue.

I am trying to generate session flash message after successful login, by overriding authenticated method of AuthenticatesUsers Trait like the following:

// in LoginController
...
use Illuminate\Http\Request;
protected function authenticated(Request $request, $user)
    {
        $request->session()->flash('status','success');
        $request->session()->flash('msg',__('Welcome back :name',['name' => $user->name]));
        return redirect('/');
    }

The flash message does not be displayed. However, when I set return redirect('/anyOtherRoute') it redirected to that route and the flash message is rendered successfully!

I, also, have tried to override sendLoginResponse method instead of authenticated method like the following:

protected function sendLoginResponse(Request $request)
    {
        $request->session()->regenerate();

        $this->clearLoginAttempts($request);
        $request->session()->flash('status','success');
        $request->session()->flash('msg',__('Welcome back :name',['name' => '$user->name']));

        return $this->authenticated($request, $this->guard()->user())
                ?: redirect()->intended($this->redirectPath());
    }

Also there is no flash message there! Finally, I tried the checked answer for the regarded question: Flash message after login laravel, but it also does not make any difference:

use AuthenticatesUsers {
        redirectPath as laravelRedirectPath;
    }

public function redirectPath()
{
    // Do your logic to flash data to session...
    session()->flash('status','success');
    session()->flash('msg',__('Welcome back :name',['name' => '$user->name']));
    // Return the results of the method we are overriding that we aliased.
    return $this->laravelRedirectPath();
}

The following is all of my LoginController code with commented any tries:

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;
    /*use AuthenticatesUsers {
        redirectPath as laravelRedirectPath;
    }*/

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/';
    //protected $loginPath = 'admin';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest', ['except' => 'logout']);
    }
    protected function authenticated(Request $request, $user)
    {
        $request->session()->flash('status','success');
        $request->session()->flash('msg',__('Welcome back :name',['name' => $user->name]));
        return redirect('/job');
    }

    /*protected function sendLoginResponse(Request $request)
    {
        $request->session()->regenerate();

        $this->clearLoginAttempts($request);
        $request->session()->flash('status','success');
        $request->session()->flash('msg',__('Welcome back :name',['name' => '$user->name']));

        return $this->authenticated($request, $this->guard()->user())
                ?: redirect()->intended($this->redirectPath());
    }*/
    protected function sendFailedLoginResponse(Request $request)
    {
        $errors = [$this->username() => trans('auth.failed')];

        if ($request->expectsJson()) {
            return response()->json($errors, 422);
        }
        $request->session()->flash('status','danger');
        $request->session()->flash('msg',__('Error: Login failed. Incorrect username or password'));
        return redirect()->back()
            ->withInput($request->only($this->username(), 'remember'))
            ->withErrors($errors);
    }

    public function username()
    {
        return 'username';
    } 
   /* public function redirectPath()
{
    // Do your logic to flash data to session...
    session()->flash('status','success');
    session()->flash('msg',__('Welcome back :name',['name' => '$user->name']));
    // Return the results of the method we are overriding that we aliased.
    return $this->laravelRedirectPath();
}   */
}

Additional Notice:

The route / is defined as a chained method in the web.php routes like the following:

Route::get('/', ['as' => 'home', function () {    

    return view('welcome');
}])->middleware('auth');
  • 写回答

1条回答 默认 最新

  • dongzhimin2231 2018-04-18 13:19
    关注

    add "web" middleware to persist session as

    Route::group(['middleware' => ['auth', 'web']], function() {
        Route::get('/', ['as' => 'home', function () {
            return view('welcome');
        }]);
    });
    
    评论

报告相同问题?

悬赏问题

  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 正弦信号发生器串并联电路电阻无法保持同步怎么办
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)