Laravel 5.2:在用户登录/注销和注册后显示会话闪烁消息
Posted
技术标签:
【中文标题】Laravel 5.2:在用户登录/注销和注册后显示会话闪烁消息【英文标题】:Laravel 5.2: Display a session flash message after user login/logout and registration 【发布时间】:2016-11-26 14:41:14 【问题描述】:使用运行php artisan make:auth
后生成的默认设置,我现在想知道如何控制我需要在用户登录时显示给用户的 Flash 消息。
到目前为止,我已经尝试将此代码添加到默认的AuthController
:
public function authenticated($request, $user)
flash('Welcome back ' . $user->username . ', you have been logged in');
但这会导致我的 Chrome 浏览器出现太多重定向错误。如何在不创建自定义 LoginController
或覆盖 AuthController
内的完整 login
方法的情况下闪烁自定义消息?
【问题讨论】:
检查/app/resources/lang/en/auth.php
文件中的一些。不确定它们是否都可以在那里定制,或者是否有些是硬编码的。
【参考方案1】:
我必须在 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());
就是这样!请注意,我使用的是自定义闪存设置。您可以使用默认值或您自己的
【讨论】:
【参考方案2】:Laravel 5.4
登录/注销
从vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
复制authenticated
和logout
方法。
粘贴到app/Http/Controllers/Auth/LoginController.php
。
添加闪信。
不要忘记导入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
。
添加闪信。
不要忘记导入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.'));
【讨论】:
以上是关于Laravel 5.2:在用户登录/注销和注册后显示会话闪烁消息的主要内容,如果未能解决你的问题,请参考以下文章
在一个用户表中使用 user_type 字段为多个用户创建 laravel 5.2 用户注册