【问题标题】:Getting subdomain within middleware web group in Laravel 5在 Laravel 5 的中间件 Web 组中获取子域
【发布时间】:2016-05-01 00:01:59
【问题描述】:

前段时间开始使用 Laravel 5.2,但之前从未使用过子域。

目前我有:

Route::group(['middleware' => ['web']], function () {
    //Login/Logout
    Route::get('/', 'Auth\AuthController@getLogin');
    Route::get('/auth/login', 'Auth\AuthController@getLogin');
    Route::post('/auth/login', 'Auth\AuthController@postLogin');
    Route::get('/logout', 'Auth\AuthController@logout');
});

问题是,如果我想获取一个子域(如果存在的话),那么我也不知道如何将它传递到 Middleware 组内的 '/' 路由中。 很多子域路由教程似乎都没有包含/引用中间件网络(因为我在页面上有表单并且也需要这个功能)。

Route::group(['middleware' => ['web']], function () {
    //Login/Logout
    Route::get('/', 'Auth\AuthController@getLogin');
    Route::get('/auth/login', 'Auth\AuthController@getLogin');
    Route::post('/auth/login', 'Auth\AuthController@postLogin');
    Route::get('/logout', 'Auth\AuthController@logout');
});

Route::group(['domain' => '{account}.myapp.com'], function () {
    Route::get('/}', function ($account) {
        //Doesn't work
    });
});

不起作用。我只想获取子域(如果存在),并将其插入,以便我可以在我的登录视图中调用它。

【问题讨论】:

    标签: php laravel laravel-5 laravel-routing


    【解决方案1】:

    这是我使用的方法。我将所有路由包装在web 中间件中,并将大多数其他路由包装在auth 中间件中,但homeabout 等公共页面除外。从那里,我可以在任何常量子域(如果适用)之后最后抓取可变子域。

    // Encapsulate all routes with web middleware
    Route::group(['middleware' => 'web'], function () {
    
        // Include auth routes
        Route::auth();
    
        // These routes are require user to be logged in
        Route::group(['middleware' => 'auth'], function () {
    
            // Constant subdomain
            Route::group(['domain' => 'admin.myapp.localhost.com'], function () {
                // Admin stuff
            });
    
            // Variable subdomains
            Route::group(['domain' => '{account}.myapp.localhost.com'], function () {
    
                // Homepage of a variable subdomain
                Route::get('/', function($account) {
                    // This will return {account}, which you can pass along to what you'd like
                    return $account;
                });
            });
        });
    
        // Public homepage
        Route::get('/', function () {
            // Homepage stuff
        });
    });
    

    它适用于我的设置,因此我希望它可以帮助您找到解决方案。

    【讨论】:

    • 看起来不错。谢谢。
    猜你喜欢
    • 2017-04-12
    • 2016-04-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多