Php Laravel auth不';不起作用,但所有路线都已正确创建
我创建了用于登录和注册的路由和控制器,但是当我尝试转到GET login或POST login时,页面不会显示,并且在php_error.log(奇怪)中不会记录任何错误。我确实创建了:auth以及路由和控制器,但我无法从get/login或POST/login请求中获得任何有用的信息。在登录/登录时,我在页面上看到此错误Php Laravel auth不';不起作用,但所有路线都已正确创建,php,laravel,authentication,laravel-5,Php,Laravel,Authentication,Laravel 5,我创建了用于登录和注册的路由和控制器,但是当我尝试转到GET login或POST login时,页面不会显示,并且在php_error.log(奇怪)中不会记录任何错误。我确实创建了:auth以及路由和控制器,但我无法从get/login或POST/login请求中获得任何有用的信息。在登录/登录时,我在页面上看到此错误 ErrorException in a19535dcda3ed1d86f3228aa05198ae78974da4f.php line 12: Undefined varia
ErrorException in a19535dcda3ed1d86f3228aa05198ae78974da4f.php line 12:
Undefined variable: errors (View: /Applications/MAMP/htdocs/gos-twilio/server-laravel/resources/views/auth/login.blade.php)
in a19535dcda3ed1d86f3228aa05198ae78974da4f.php line 12
at CompilerEngine->handleViewException(object(ErrorException), '1') in PhpEngine.php line 44
at PhpEngine->evaluatePath('/Applications/MAMP/htdocs/gos-twilio/server-laravel/storage/framework/views/a19535dcda3ed1d86f3228aa05198ae78974da4f.php', array('__env' => object(Factory), 'app' => object(Application))) in CompilerEngine.php line 59
php_error.log中没有错误。在POST/登录时,我可以从AuthController
中的自定义方法获得自己的输出,但我怀疑它是否适用,例如自动连接到用户模型、登录限制等,因为我在/http/controller/auth/AuthController.php
中为该请求创建了自己的方法,称为受保护函数login()
我做错了什么?这是php artisan route:list的输出:
+--------+----------+-------------------------+----------------+-----------------------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------------------------+----------------+-----------------------------------------------------------------+------------+
| | GET|HEAD | / | home | Closure | |
| | GET|HEAD | home | | App\Http\Controllers\HomeController@index | auth |
| | GET|HEAD | login | | App\Http\Controllers\Auth\AuthController@showLoginForm | guest |
| | POST | login | | App\Http\Controllers\Auth\AuthController@login | guest |
| | GET|HEAD | logout | | App\Http\Controllers\Auth\AuthController@logout | |
| | POST | password/email | | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | guest |
| | POST | password/reset | | App\Http\Controllers\Auth\PasswordController@reset | guest |
| | GET|HEAD | password/reset/{token?} | | App\Http\Controllers\Auth\PasswordController@showResetForm | guest |
| | GET|HEAD | register | | App\Http\Controllers\Auth\AuthController@showRegistrationForm | guest |
| | POST | register | | App\Http\Controllers\Auth\AuthController@register | guest |
| | POST | token | token-generate | App\Http\Controllers\TokenController@generate | |
+--------+----------+-------------------------+----------------+-----------------------------------------------------------------+------------+
路由在app/http/Routes.php中定义,其中包含以下内容:
<?php
Route::get(
'/',
['as' => 'home', function () {
return response()->view('index');
}]
);
Route::post(
'/token',
['uses' => 'TokenController@generate', 'as' => 'token-generate']
);
Route::auth();
Route::get('/home', 'HomeController@index');
Route::auth();
Route::get('/home', 'HomeController@index');
Route::auth();
Route::get('/home', 'HomeController@index');
Route::auth();
Route::get('/home', 'HomeController@index');
在最新版本的Laravel 5.2上,您将拥有一组可分配给路由的web
中间件。这个特定的中间件组很重要,因为它提供了会话支持,StartSession
中间件,这是身份验证系统默认使用的,它提供了一个中间件,用于与您的视图共享会话错误,ShareErrorsFromSession
中间件(这导致视图中存在可用的$errors
变量)
在新安装中,web
中间件组将已应用于routes.php
文件中的所有路由。如果不是这样,那么您可以在RouteServiceProvider
中进行此调整:
public function map(Router $router)
{
$this->mapWebRoutes($router);
//
}
protected function mapWebRoutes(Router $router)
{
$router->group([
'namespace' => $this->namespace,
'middleware' => 'web', // <---- assigning the 'web' group middleware
], function ($router) {
require app_path('Http/routes.php');
});
}
您好!是的,好的,我将用这些细节更新问题。我如何获得Laravel的版本?我找不到routes/web.php文件…对,我的错,对不起,只有php artisan
显示了版本。好的,5.2…真的没有线索,从来没有使用过它。如果可以,升级到至少…5.5,我想,在该版本之前情况会有很大变化,请选择ly 5.8,如果您想继续使用L5。这里没有帮助,抱歉。很好的luckany原因是您没有将web
中间件组分配给这些路由?这是会话所需的,也是分配ShareErrorsFromSession
中间件的位置(在视图中为您提供$errors
变量)您需要将web
中间件应用于这些路由,否则您将不会有会话(这意味着没有身份验证),并且您的视图中也不会有$errors
变量…因此添加此middlewareHi!感谢您的帮助!但是,使用第二种方法不起作用。对于第一种解决方案(在RouteServiceProvider中添加代码),文件系统中有几个该类的定义(奇怪的是)。我应该在哪里添加它?我在app/providers/RouteServiceProvider中看到它,但在compiled.php和vendor/laravel/framework/iluminate中也看到它……成功了!我在app/providers/RouteServiceProvider中添加了它
Route::group(['middleware' => 'web'], function () {
// your routes here
});