【问题标题】:Laravel Method [index@index] does not existLaravel 方法 [index@index] 不存在
【发布时间】:2019-04-11 02:00:50
【问题描述】:

我有 Laravel 4.2 应用程序并将其更新到 Laravel 5.4。为此,我安装了新的 Laravel 5.4 并迁移了路由、控制器视图等。

我想保护 /warehouse 之后的所有页面,例如 /warehouse/dashboard、/warehouse/accounts 等,除了 /warehouse/login 页面。我已经搜索并使用了这条路线,但它不能正常工作。

谁能告诉我正确的身份验证方式是什么。

Route::group(['middleware' => ['auth']], function() {
         // uses 'auth' middleware
         Route::resource('/warehouse','WarehouseController@index');
    });

我的登录和验证路线是

Route::get('/warehouse/login', array('as' => 'WarehouseAdminLogin', 'uses' => 'WarehouseController@login'));

Route::post('/warehouse/verify', array('as' => 'WarehouseAdminVerify', 'uses' => 'WarehouseController@verify'));

【问题讨论】:

  • 显示WarehouseController@login的内容

标签: laravel laravel-5 laravel-5.4


【解决方案1】:

Route:resource 不需要在控制器后面加上函数名。

所以试试这个:

Route::resource('/warehouse','WarehouseController');

对于Auth middlware,您可以这样做:

Route::middleware(['auth']->group(function() {
  // Auth routes
});

很明显登录路径不应该在auth中间件里面! 新访客用户如何查看登录页面? 在 auth 中间件之外使用 Auth 路由:

Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::get('logout', 'Auth\LoginController@logout')->name('logout');

【讨论】:

  • 中间件和未经授权的访问怎么办? @艾哈迈德
  • 现在如果我尝试在不登录的情况下访问 /warehouse,它会给我 Route [login] not defined。
  • @DanishJamshed 试图在没有登录的情况下获取 auth 路由将用户重定向到登录页面
  • 它让我的页面无法在 Firefox 上正确重定向,并且在 chrome 中重定向太多...我的登录页面 url 是 /warehouse/login
  • 显然login路由不应该在auth中间件中!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 2018-05-25
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
相关资源
最近更新 更多