【问题标题】:How to use different optional middlewares for same route using same method如何使用相同的方法为相同的路由使用不同的可选中间件
【发布时间】:2020-06-16 10:33:09
【问题描述】:

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

在我的项目中,我使用了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.');
}

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));
}

【问题讨论】:

    标签: php laravel laravel-5.7


    【解决方案1】:

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

    路线

    Route::get('/', 'HomeController@index')->name('home'); //removed middleware
    

    AuthenticatesUsers.php

    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 ) );
    }
    

    我不知道这是否是最好的方法,但我现在已经这样做了,没有使用任何中间件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-17
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      相关资源
      最近更新 更多