我正在开发一个中间件,以便处理客人到保护区的重定向。我有2个登录页面,一个用于前端,另一个用于后端,并希望访客根据他们输入的位置重定向到每个登录页面。我的意思是:
EXCEPT
之类的路线,则必须将其重定向至/admin/dashboard
。/admin/login
,则必须将其重定向至/messages
。这是我的routes.php
/login
在中间件中,我试图获取路线的组名,但无法找到获得我的方式,如下所示:
Route::get('/', function () {
return view('inicio');
});
Route::group(['as'=>'clientRoutes', 'middleware'=>'loginSelector'], function(){
Route::get('/polizas', function () {
return view('cliente.polizas');
});
});
Route::group(['as'=>'adminRoutes','prefix'=>'admin', 'middleware'=>'loginSelector'], function(){
Route::get('/inicio', function () {
return view('admin.inicio');
});
Route::get('/lista', function () {
return view('admin.lista');
});
});
Route::get('/admin/login', function () {
return view('admin.login');
});
如果可以,我如何获取组名进行重定向?或者,如果不可能实现这种重定向?
答案 0 :(得分:0)
由于@Samsquanch提供的link,我解决了这个问题。
这是中间件代码:
public function handle($request, Closure $next)
{
$routeName = $request->route()->getName();
if(strpos($routeName, 'adminRoutes.') === 0){
if(!Auth::user()){
return redirect('/admin/login');
}
}elseif(strpos($routeName, 'clientRoutes.') === 0){
if(!Auth::user()){
return redirect('/login');
}
}
return $next($request);
}
这些是我的路线:
Route::group(['as'=>'clientRoutes.', 'middleware'=>'loginSelector'], function(){
Route::get('/polizas', function () {
return view('cliente.polizas');
});
});
Route::group(['as'=>'adminRoutes.','prefix'=>'admin', 'middleware'=>'loginSelector'], function(){
Route::get('/inicio', function () {
return view('admin.inicio');
});
Route::get('/lista', function () {
return view('admin.lista');
});
});
Route::get('/admin/login', function () {
return view('admin.login');
});
当我转到网址/admin/lista
时,我被重定向到/admin/login
,当我到达/polizas
时,我被重定向到/login
。
如果您使用我的解决方案,则必须注意每个登录表单中发生的情况,具体取决于经过身份验证的用户角色。