【问题标题】:How to add route group inside another route group.. Laravel 5如何在另一个路由组中添加路由组.. Laravel 5
【发布时间】:2016-06-09 18:29:22
【问题描述】:

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

Route::group(['middleware' => 'cors'], function(Router $router){

});

Route::group([

  'prefix' => 'api/v1',
  'namespace' => 'Api'

], function () {

    Route::post('/auth/register', [
    'as' => 'auth.register',
    'uses' => 'AuthController@register'
  ]);

  Route::post('/auth/login', [

    'as' => 'auth.login',
    'uses' => 'AuthController@login'
  ]);

});

我想在中间件路由中添加前缀组路由,如何实现?

【问题讨论】:

    标签: laravel-5 routing


    【解决方案1】:

    您可以在彼此内部嵌套路由组。只需将一个包裹在另一个的封闭中即可。

    Route::group(['middleware' => 'cors'], function(Router $router){
        Route::group(
            [
              'prefix' => 'api/v1',
              'namespace' => 'Api'
            ], function () {
                Route::post('/auth/register', [
                    'as' => 'auth.register',
                    'uses' => 'AuthController@register'
                 ]);
    
                Route::post('/auth/login', [
                    'as' => 'auth.login',
                    'uses' => 'AuthController@login'
                ]);
        });
    });
    

    【讨论】:

    • 在下面的帖子中查看我的 cmets。我认为您的问题与路由分组无关。我也知道您可以简单地将 CORS 中间件添加到您的阵列中并将其保留在一个路由组中,但由于您特别询问将路由组 inside 彼此,我这样回答。跨度>
    【解决方案2】:

    嘿,我解决了这个问题,

    Route::group([
    
      'prefix' => 'api/v1',
      'namespace' => 'Api',
       'middleware'  =>'cors'
    
    ],
     function () {
    
        Route::post('/auth/register', [
        'as' => 'auth.register',
        'uses' => 'AuthController@register'
    
    
      ]);
      Route::post('/auth/login', [
    
        'as' => 'auth.login',
        'uses' => 'AuthController@login'
    
      ]);
    

    });

    但这里的问题是我收到此错误 XMLHttpRequest 无法加载http://localhost:8000/api/v1/auth/login。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:9000' 不允许访问。响应的 HTTP 状态代码为 500。

    我的 chrome 有什么问题吗,因为我听说 chrome 中有 cors 插件。

    谢谢:)

    【讨论】:

    • 这是一个 CORS 错误,可能表明您的 CORS 中间件存在问题;但是,因为您收到的状态代码为 500,这可能意味着您的 Auth 控制器有问题。如果您不使用 CORS 中间件,它可以工作吗?如果是这样,请调查中间件。如果它仍然中断,那么这是您的 Auth 实现的问题。也许它没有将所有数据正确传递给它?
    • 谢谢安迪,你是对的,我输入了错误的用户名和密码可能就是这个原因。对吗?
    • 希望您的身份验证能够以更好的方式处理不正确的用户名/密码,而不是中断 500 错误,所以它可能是别的东西。如果您取出 CORS 中间件,它是否有效,或者至少不会中断?如果您的 CORS 中间件导致问题,请记住它可能没有损坏,只是没有正确配置。我曾经花了很长时间困惑为什么我自己的 CORS 中间件无法正常工作,直到我意识到我没有正确配置允许的来源。
    • 如果您尝试使用 AJAX 登录并使用内置的 AuthController,您可能会遇到一些麻烦。我做了同样的事情,并且不得不构建自己的自定义 AuthController,因为我的数据库没有 remember_me 令牌之类的东西。您真的必须亲自尝试每一件,看看您是否能确定哪一部分是您的问题。
    • 嗯,我是这些技术的新手,和这两个一起花了将近一个月的时间,有时它变得如此令人沮丧,而且几乎没有像 yeoman 和 grunt 这样的人,所以是的,还有很长的路要走。跨度>
    猜你喜欢
    • 2020-11-08
    • 2018-10-20
    • 2020-10-11
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2016-12-10
    相关资源
    最近更新 更多