路线组做当前路线的Laravel属于

时间:2018-01-13 07:59:02

标签: php laravel-5.5

我正在使用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路由页面上执行弹出模式,而不必检查和维护要测试的路由列表。感谢。

2 个答案:

答案 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