使用运行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
复制authenticated
和logout
方法
粘贴到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());
}
就是这样!请注意,我使用的是自定义闪光灯设置。您可以使用默认值或您自己的