我正在使用Laravel 5.3
哪个Auth
用户控制器。Listener
所以基本上我为Auth
事件创建了一个
'Illuminate\Auth\Events\Login' => [
'App\Listeners\LogSuccessfulLogin',
],
并在LogSuccessfulLogin
handle()
基本功能上重定向用户role
。但我的重定向功能不起作用。它呈现默认页面 '\home' 路由。
我正在分享我的文件:-
事件服务提供者.php
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'App\Events\SomeEvent' => [
'App\Listeners\EventListener',
],
'Illuminate\Auth\Events\Login' => [
'App\Listeners\LogSuccessfulLogin',
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
parent::boot();
//
}
}
路线/web.php
<?php
//Auth::routes();
Route::get('logout', function(){
Auth::logout(); // logout user
return Redirect::to('/');
});
#Route::get('/', 'HomeController@index')->name('homepage');
Route::get('/', function () {return view('welcome');});
Route::group(['middleware' => ['auth', 'checkrole:Admin'],'namespace' => 'Admin','prefix' => 'admin'], function () {
Route::get('/123','DashboardController@index')->name('dashboard');
#Route::get('/','DashboardController@index')->name('dashboard');
Route::get('user/profile', function () {
// Uses Auth Middleware
});
});
这是 LogSuccessfulLogin.php
<?php
namespace App\Listeners;
use Illuminate\Auth\Events\Login;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
class LogSuccessfulLogin
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param Login $event
* @return void
*/
public function handle(Login $event)
{
$user=Auth::User()->role->role_name;
if($user=="Admin"){
return Redirect::route('dashboard');
#return redirect()->route('login');
}
elseif($user == "Employer" ){
dd("hello");
}
}
}
这是Auth的默认登录控制器
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
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;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
}
}
如果我做错了什么,请告诉我。实际上我也尝试在LogSuccessfulLogin
监听器中重定向页面,return redirect()->route('login');
但它也不起作用。