【问题标题】:Laravel. Make redirects between subdomains拉拉维尔。在子域之间进行重定向
【发布时间】:2014-12-21 11:52:48
【问题描述】:

我正在开发一个带有管理子域的应用程序,所以我有admin.example.comwww.example.com。我的问题是:每当用户尝试输入admin.example.com 时,他都应该被重定向到登录页面(如果未登录),该页面位于www.example.com/login

如何从admin.example.com 重定向到www.example.com/login ?我已经在我的app/routes.php 中尝试过这个:

Route::group(['domain' => 'admin.example.com'], function(){
  Route::get('/', 'AdminHomeController@getWelcome');
  Route::any("{all}", function(){App::abort(404);})->where('all', '.*');
  // I used this line to block access routes in admin.example.com not defined here
});

Route::group(['domain' => 'www.example.com'], function()
{
..... 
Route::controller('/', 'AuthController'); // here is defined getLogin
}

使用此代码,我可以执行Redirect::to(action('AuthController@getLogin'))。虽然我不确定这是实现这一目标的正确方法。有什么建议吗?

【问题讨论】:

    标签: redirect laravel-4 laravel-routing


    【解决方案1】:

    auth 过滤器附加到您的admin.example.com 组。在过滤器中,您将检查用户是否已通过身份验证;如果不是,则return Redirect::guest(www.example.com/login)`。

    Route::group(['domain' => 'admin.example.com', 'before' => 'auth'], function(){
    ....
    

    在您的auth 过滤器中:

    Route::filter('auth', function()
    {
        if (Auth::guest()) return Redirect::guest( Config::get('app.url').'/login' );
    });
    

    登录后,您可以使用Redirect::intended() 回到用户最初尝试去的地方。

    【讨论】:

    • 我试过这个,但它会将我重定向到admin.example.com/login
    • 您可以在Redirect::guest('http://www.example.com/login')中指定完整的URL。
    • 并且,为了防止对基本 URL 进行硬编码,您可以使用 return Redirect::guest( Config::get('app.url').'/login' );。这将从您的 config/app 文件中读取 URL,您可以根据您的环境(本地与生产等)进行更改。(我编辑了答案以包含此内容。)
    • 快到了,但是打电话给return Redirect::guest(Config::get('app.url').'/login');会把我转到admin.example.com/www.example.com/login
    • 确保config/app 中的'url' 值以http:// 为前缀;它应该是'url' => 'http://www.example.com',
    猜你喜欢
    • 2017-10-21
    • 1970-01-01
    • 2018-05-29
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多