我正在使用Laravel 5.5
并想知道当前路由是否属于auth:web
中间件组。有没有办法得到这个?
我的路线:
/***********************************************************************************************************************
* Guest routes
**********************************************************************************************************************/
Route::group([
'middleware' => ['guest']
], function () {
Route::get("login", "Auth\LoginController@showLoginForm")->name("user.login");
Route::post("login", "Auth\LoginController@login")->name("user.do-login");
..................
});
/***********************************************************************************************************************
* All routes that require AUTH
**********************************************************************************************************************/
Route::group([
'middleware' => ['auth:user']
], function () {
..............
});
如下所示。注意我想要route group
而不是auth
的{{1}}:
user
这可能吗?我似乎无法在$request()->currentRoute()->isGuest();
文档中找到它。
我试图在所有Laravel
路由页面上执行弹出模式,而不必检查和维护要测试的路由列表。感谢。
答案 0 :(得分:0)
修复了解决方法。为所有路由名称添加了web.
或app.
前缀,现在我搜索此内容。
@if(substr(\Request::route()->getName(), 0, 4) !== 'web.')
@include('org.popupmsg.modal-pop')
@endif
现在路线已更改为:web.user.login
答案 1 :(得分:0)
您可以修改来宾中间件类handle
中的\App\Http\Middleware\RedirectIfAuthenticated
方法,例如:
public function handle($request, Closure $next, $guard = null)
{
// share a token to all views for this middleware:
View::share('is_guest_route', true); // <-- this line is added
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
确保还添加:
use Illuminate\Support\Facades\View;
在文件的use-section中。
现在,在每个视图(刀片文件)中,您都可以执行以下操作:
@if (isset($is_guest_route))
// do whatever is needed for guest routes
@endif