Laravel 5.2:在用户登录/注销和注册后显示会话闪存消息


Laravel 5.2: Display a session flash message after user login/logout and registration

使用运行php artisan make:auth后生成的默认设置,我现在想知道如何控制用户登录时需要向其显示的闪烁消息。

到目前为止,我已经尝试将此代码添加到默认的AuthController:

 public function authenticated($request, $user)
    {
        flash('Welcome back ' . $user->username . ', you have been logged in');
    }

但这会导致我的Chrome浏览器中出现太多重定向错误。如何在不创建自定义LoginController或覆盖AuthController中的完整login方法的情况下闪烁自定义消息?

Laravel 5.4

登录/注销

vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php复制authenticatedlogout方法
粘贴到app/Http/Controllers/Auth/LoginController.php
添加flash消息
不要忘记导入Illuminate'Http'Request

use Illuminate'Http'Request;
class LoginController extends Controller
{
    /**
     * The user has been authenticated.
     *
     * @param  'Illuminate'Http'Request  $request
     * @param  mixed  $user
     * @return 'Illuminate'Http'Response
     */
    protected function authenticated(Request $request, $user)
    {
        return redirect('users/' . $user->id)->with('status', __('You logged in.'));
    }
    /**
     * Log the user out of the application.
     *
     * @param  'Illuminate'Http'Request  $request
     * @return 'Illuminate'Http'Response
     */
    public function logout(Request $request)
    {
        $this->guard()->logout();
        $request->session()->flush();
        $request->session()->regenerate();
        return redirect('/')->with('status', __('You logged out.'));
    }

寄存器

vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.php复制registered方法
粘贴到app/Http/Controllers/Auth/RegisterController.php
添加flash消息
不要忘记导入Illuminate'Http'Request

use Illuminate'Http'Request;
class RegisterController extends Controller
{
    /**
     * The user has been registered.
     *
     * @param  'Illuminate'Http'Request  $request
     * @param  mixed  $user
     * @return 'Illuminate'Http'Response
     */
    protected function registered(Request $request, $user)
    {
        return redirect('users/' . $user->id)->with('status', __('You were registered.'));
    }

我不得不重写AuthController中的以下方法:

/**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        $successmessage = 'you are now successfully registered!';
        flash()->overlay('Yes', $successmessage, 'success');
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
    /**
     * Log the user out of the application.
     *
     * @return 'Illuminate'Http'Response
     */
    public function logout()
    {
        Auth::logout();
        flash()->info('Bye', 'You have been successfully logged out!');
        return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/');
    }
    /**
     * Function called after user logs in
     * @return 'Illuminate'Http'RedirectResponse
     */
    protected function authenticated() {
        $successmessage = 'Hej '.Auth::user()->name.', you are logged in!';
        flash()->success('Hello', $successmessage);
        return redirect()->intended($this->redirectPath());
    }

就是这样!请注意,我使用的是自定义闪光灯设置。您可以使用默认值或您自己的