Laravel:RouteCollection.php中的NotFoundHttpException
我试图在Laravel中设置路由保护,但收到以下错误消息:Laravel:RouteCollection.php中的NotFoundHttpException,php,laravel,laravel-5,laravel-4,laravel-blade,Php,Laravel,Laravel 5,Laravel 4,Laravel Blade,我试图在Laravel中设置路由保护,但收到以下错误消息: NotFoundHttpException in RouteCollection.php line 179: in RouteCollection.php line 179 at RouteCollection->match(object(Request)) in Router.php line 533 at Router->findRoute(object(Request)) in Router.php line 512
NotFoundHttpException in RouteCollection.php line 179:
in RouteCollection.php line 179
at RouteCollection->match(object(Request)) in Router.php line 533
at Router->findRoute(object(Request)) in Router.php line 512
at Router->dispatchToRoute(object(Request)) in Router.php line 498
at Router->dispatch(object(Request)) in Kernel.php line 174
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ValidatePostSize.php line 27
at ValidatePostSize->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 149
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 53
我做错了什么?错误来自哪里?昨天一切顺利
Myweb.php
Route::get('/', function () {
return view('welcome');
})->name('home');
Route::post('/signup', [
'uses' => 'UserController@postSignUp',
'as' => 'signup'
]);
Route::post('/signin', [
'uses' => 'UserController@postSignIn',
'as' => 'signin'
]);
Route::get('/dashboard', [
'uses' => 'UserController@getDashboard',
'as' => 'dashboard',
'middleware' => 'auth'
]);
MyUserController.php
:
<?php
namespace App;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect()->route('home');
}
return $next($request);
}
}
@extends('layouts.master')
@section('title')
Welcome!
@endsection
@section('content')
@if(count($errors) > 0)
<div class="row">
<div class="col-sm-4 col-md-offset-4">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<div class="row">
<div class="col-sm-6">
<h3>Sign Up</h3>
<form class="" action="{{ route('signup') }}" method="post">
<div class="form-group {{ $errors->has('name') ? 'has-error' : '' }}">
<label for="name">Your Name</label>
<input class="form-control" type="text" name="name" id="name" value="{{ Request::old('name') }}">
</div>
<div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}">
<label for="email">Your E-Mail</label>
<input class="form-control" type="text" name="email" id="email" value="{{ Request::old('email') }}">
</div>
<div class="form-group {{ $errors->has('password') ? 'has-error' : '' }}">
<label for="password">Your Password</label>
<input class="form-control" type="password" name="password" id="password" value="{{ Request::old('password') }}">
</div>
<button type="submit" class="btn btn-primary" name="button">Submit</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
</div>
<div class="col-sm-6">
<h3>Sign In</h3>
<form class="" action="{{ route('signin') }}" method="post">
<div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}">
<label for="email">Your E-Mail</label>
<input class="form-control" type="text" name="email" id="email" value="{{ Request::old('email') }}">
</div>
<div class="form-group {{ $errors->has('password') ? 'has-error' : '' }}">
<label for="password">Your Password</label>
<input class="form-control" type="password" name="password" id="password" value="{{ Request::old('password') }}">
</div>
<button type="submit" class="btn btn-primary" name="button">Submit</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
</div>
</div>
@endsection
MyUser.php
:
<?php
namespace App;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect()->route('home');
}
return $next($request);
}
}
@extends('layouts.master')
@section('title')
Welcome!
@endsection
@section('content')
@if(count($errors) > 0)
<div class="row">
<div class="col-sm-4 col-md-offset-4">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<div class="row">
<div class="col-sm-6">
<h3>Sign Up</h3>
<form class="" action="{{ route('signup') }}" method="post">
<div class="form-group {{ $errors->has('name') ? 'has-error' : '' }}">
<label for="name">Your Name</label>
<input class="form-control" type="text" name="name" id="name" value="{{ Request::old('name') }}">
</div>
<div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}">
<label for="email">Your E-Mail</label>
<input class="form-control" type="text" name="email" id="email" value="{{ Request::old('email') }}">
</div>
<div class="form-group {{ $errors->has('password') ? 'has-error' : '' }}">
<label for="password">Your Password</label>
<input class="form-control" type="password" name="password" id="password" value="{{ Request::old('password') }}">
</div>
<button type="submit" class="btn btn-primary" name="button">Submit</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
</div>
<div class="col-sm-6">
<h3>Sign In</h3>
<form class="" action="{{ route('signin') }}" method="post">
<div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}">
<label for="email">Your E-Mail</label>
<input class="form-control" type="text" name="email" id="email" value="{{ Request::old('email') }}">
</div>
<div class="form-group {{ $errors->has('password') ? 'has-error' : '' }}">
<label for="password">Your Password</label>
<input class="form-control" type="password" name="password" id="password" value="{{ Request::old('password') }}">
</div>
<button type="submit" class="btn btn-primary" name="button">Submit</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
</div>
</div>
@endsection
Mywelcome.blade.php
:
<?php
namespace App;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect()->route('home');
}
return $next($request);
}
}
@extends('layouts.master')
@section('title')
Welcome!
@endsection
@section('content')
@if(count($errors) > 0)
<div class="row">
<div class="col-sm-4 col-md-offset-4">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<div class="row">
<div class="col-sm-6">
<h3>Sign Up</h3>
<form class="" action="{{ route('signup') }}" method="post">
<div class="form-group {{ $errors->has('name') ? 'has-error' : '' }}">
<label for="name">Your Name</label>
<input class="form-control" type="text" name="name" id="name" value="{{ Request::old('name') }}">
</div>
<div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}">
<label for="email">Your E-Mail</label>
<input class="form-control" type="text" name="email" id="email" value="{{ Request::old('email') }}">
</div>
<div class="form-group {{ $errors->has('password') ? 'has-error' : '' }}">
<label for="password">Your Password</label>
<input class="form-control" type="password" name="password" id="password" value="{{ Request::old('password') }}">
</div>
<button type="submit" class="btn btn-primary" name="button">Submit</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
</div>
<div class="col-sm-6">
<h3>Sign In</h3>
<form class="" action="{{ route('signin') }}" method="post">
<div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}">
<label for="email">Your E-Mail</label>
<input class="form-control" type="text" name="email" id="email" value="{{ Request::old('email') }}">
</div>
<div class="form-group {{ $errors->has('password') ? 'has-error' : '' }}">
<label for="password">Your Password</label>
<input class="form-control" type="password" name="password" id="password" value="{{ Request::old('password') }}">
</div>
<button type="submit" class="btn btn-primary" name="button">Submit</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
</div>
</div>
@endsection
@extends('layouts.master'))
@章节(“标题”)
欢迎
@端部
@节(“内容”)
@如果(计数($errors)>0)
@foreach($errors->all()作为$error)
- {{$error}}
@endforeach
@恩迪夫
注册
你的名字
你的电子邮件
你的密码
提交
登录
你的电子邮件
你的密码
提交
@端部
php artisan路由:列表输出以下内容:
我使用XMAPP并在localhost:81
上发布应用程序,因为端口80已经被占用
希望您能帮助我。我看不到任何可能引发此问题的路线。唯一的问题是,试图访问您的仪表板的非授权用户将被重定向到
/login
,这可能会导致此触发器。进行以下更改。您还缺少用于重定向已登录用户的来宾中间件
重定向试图访问身份验证页的未经身份验证的用户
app/Exceptions/Handler.php
return redirect()->guest(route('home'));
您需要重定向试图访问仅来宾页面的身份验证用户,所以将他们重定向到仪表板而不是主页
app/Http/Middleware/RedirectIfAuthenticated.php
return redirect()->route('dashboard');
将来宾中间件应用于非身份验证路由
<?php
Route::group(['middleware' => ['guest']], function () {
Route::get('/', function () {
return view('welcome');
})->name('home');
Route::post('signup', [
'uses' => 'UserController@postSignUp',
'as' => 'signup'
]);
Route::post('signin', [
'uses' => 'UserController@postSignIn',
'as' => 'signin'
]);
});
Route::get('dashboard', [
'uses' => 'UserController@getDashboard',
'as' => 'dashboard',
'middleware' => 'auth'
]);
我没有看到任何可能触发此问题的路由。唯一的问题是,试图访问您的仪表板的非授权用户将被重定向到/login
,这可能会导致此触发器。进行以下更改。您还缺少用于重定向已登录用户的来宾中间件
重定向试图访问身份验证页的未经身份验证的用户
app/Exceptions/Handler.php
return redirect()->guest(route('home'));
您需要重定向试图访问仅来宾页面的身份验证用户,所以将他们重定向到仪表板而不是主页
app/Http/Middleware/RedirectIfAuthenticated.php
return redirect()->route('dashboard');
将来宾中间件应用于非身份验证路由
<?php
Route::group(['middleware' => ['guest']], function () {
Route::get('/', function () {
return view('welcome');
})->name('home');
Route::post('signup', [
'uses' => 'UserController@postSignUp',
'as' => 'signup'
]);
Route::post('signin', [
'uses' => 'UserController@postSignIn',
'as' => 'signin'
]);
});
Route::get('dashboard', [
'uses' => 'UserController@getDashboard',
'as' => 'dashboard',
'middleware' => 'auth'
]);
不起作用。。单击“提交”按钮后,我得到:对不起,找不到您要查找的页面,上面出现了相同的错误。@Codehan25提交什么?注册还是登录?同时运行php artisan route:list
并将结果发布到您的问题中……两者都可以,无论表单是否为空。我已经用php artisan route:list的结果更新了我的问题。@Codehan25从您的应用程序文件夹中运行php artisan Service
,然后从访问站点并检查它是否有效。您不应该在xampp的目录路径下运行laravel应用程序,因为它需要重写url。不起作用。。单击“提交”按钮后,我得到:对不起,找不到您要查找的页面,上面出现了相同的错误。@Codehan25提交什么?注册还是登录?同时运行php artisan route:list
并将结果发布到您的问题中……两者都可以,无论表单是否为空。我已经用php artisan route:list的结果更新了我的问题。@Codehan25从您的应用程序文件夹中运行php artisan Service
,然后从访问站点并检查它是否有效。您不应该在xampp的目录路径下运行laravel应用程序,因为它需要重写url。