Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用相同的方法为相同的路由使用不同的可选中间件_Php_Laravel_Laravel 5.7 - Fatal编程技术网

Php 如何使用相同的方法为相同的路由使用不同的可选中间件

Php 如何使用相同的方法为相同的路由使用不同的可选中间件,php,laravel,laravel-5.7,Php,Laravel,Laravel 5.7,我在同一/路线上应用不同的中档时遇到问题。例如 Route::get('/', 'HomeController@index')->name('home')->middleware('usertype'); public function handle($request, Closure $next) { if (auth()->check() AND auth()->user()->type != 1) { return $next($re

我在同一
/
路线上应用不同的中档时遇到问题。例如

Route::get('/', 'HomeController@index')->name('home')->middleware('usertype');
public function handle($request, Closure $next)
{
    if (auth()->check() AND auth()->user()->type != 1) {
        return $next($request);
    }
    auth()->logout();
    return redirect(route('login'))->with('error','Admin can not login to frontend.');
}
Route::get('/', 'HomeController@index')->name('home'); //removed middleware
在我的项目中,我使用了
url()->previous()
这是因为如果用户没有登录某些页面,那么他/她必须在几次搜索或访问几页后登录。因此,当用户登录时,必须将该用户重定向回上一个url

实际上,
/
无论用户是否登录,这条路线都很少提供服务。但登录后,我想检查用户是否是管理员,然后他必须受到限制,因为这是一个前端应用程序。但是,每当我登录时,它都会将我重定向到
/
路由,因为
url()->previous()
,而我无法将中间件应用于此路由,因为它是一个来宾路由,没有身份验证。 因此,实际的问题是,我如何使这条路线对于多个中间件是可选的?或任何其他建议将不胜感激。谢谢

路线

Route::get('/', 'HomeController@index')->name('home')->middleware('usertype');
public function handle($request, Closure $next)
{
    if (auth()->check() AND auth()->user()->type != 1) {
        return $next($request);
    }
    auth()->logout();
    return redirect(route('login'))->with('error','Admin can not login to frontend.');
}
Route::get('/', 'HomeController@index')->name('home'); //removed middleware
中间件

Route::get('/', 'HomeController@index')->name('home')->middleware('usertype');
public function handle($request, Closure $next)
{
    if (auth()->check() AND auth()->user()->type != 1) {
        return $next($request);
    }
    auth()->logout();
    return redirect(route('login'))->with('error','Admin can not login to frontend.');
}
Route::get('/', 'HomeController@index')->name('home'); //removed middleware
AuthenticatesUsers.php

public function showLoginForm()
{
    if(!session()->has('from')){
        session()->put('from', url()->previous());
    }
    return view('auth.login');
}

protected function authenticated(Request $request, $user)
{
    Session::put('name',$user->userDetail);
    return redirect(session()->pull('from',$this->redirectTo));
}
protected function authenticated(Request $request, $user)
{
   //If the user is admin he can't login to frontend application
    if ( $user->type == 1){
        auth()->logout();
        return redirect(route('login'))->withError('Admin can not login to frontend.');
    }

    session()->put( 'name', $user->userDetail);
    return redirect( session()->pull( 'from', $this->redirectTo ) );
}

昨天上传了我的问题后,我还没有收到任何答案。但是,如果有人能从我这里得到帮助,或者有人能更清楚地帮助我,那么让我与你们分享我为这个场景所做的一切

路线

Route::get('/', 'HomeController@index')->name('home')->middleware('usertype');
public function handle($request, Closure $next)
{
    if (auth()->check() AND auth()->user()->type != 1) {
        return $next($request);
    }
    auth()->logout();
    return redirect(route('login'))->with('error','Admin can not login to frontend.');
}
Route::get('/', 'HomeController@index')->name('home'); //removed middleware
AuthenticatesUsers.php

public function showLoginForm()
{
    if(!session()->has('from')){
        session()->put('from', url()->previous());
    }
    return view('auth.login');
}

protected function authenticated(Request $request, $user)
{
    Session::put('name',$user->userDetail);
    return redirect(session()->pull('from',$this->redirectTo));
}
protected function authenticated(Request $request, $user)
{
   //If the user is admin he can't login to frontend application
    if ( $user->type == 1){
        auth()->logout();
        return redirect(route('login'))->withError('Admin can not login to frontend.');
    }

    session()->put( 'name', $user->userDetail);
    return redirect( session()->pull( 'from', $this->redirectTo ) );
}
我不知道这是否是最好的方法,但我现在已经这样做了,没有使用任何中间件