【发布时间】: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