我开始创建我的应用程序
结果:我有" Home"页面(安全页面需要身份验证)和公共页面,"关于"
路线档案:
<?php
Route::get('/', function () {
return view('welcome');
});
Route::auth();
Route::get('/about', 'AboutController@index');
Route::get('/home', 'HomeController@index');
....
?>
关于控制器是这样的:
<?php namespace App\Http\Controllers; use App\Http\Requests; use
Illuminate\Http\Request;
class AboutController extends Controller {
public function __construct() {
}
public function index() {
return view('about');
}
}
这是我的about.blade.php
文件:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-1">
<div class="panel panel-default">
<div class="panel-heading">About</div>
<div class="panel-body">
About page!
</div>
</div>
</div>
</div>
</div>
@endsection
当我退出时:
一切都很好,我可以毫无问题地访问“关于”页面。主页需要登录,很好。
当我登录时:
我可以访问主页,那没关系。
但是当我访问about页面时,我在视图页面上收到的错误如下:
AliasLoader.php第63行中的FatalErrorException:&#39; 100&#39;的最大函数嵌套级别到达,流产!
如果我在“关于”页面中添加:$this->middleware('auth');
,那很好,但我不想这样做。
我已经尝试了所有这些:
<?php
............
//$this->middleware('auth');
//$this->middleware('auth', ['only' => 'create']);
//$this->middleware('auth', ['only' => ['create', 'edit', 'destroy']]);
//$this->middleware('guest', ['except' => 'index']);
//$this->middleware('guest', ['except' => ['index', 'create']]);
//$this->middleware('guest');
........
?>
但问题仍然存在。
看起来这个页面需要中间件,所以,我这样做了:
<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AboutController extends Controller {
public function __construct() {
if (Auth::check()) {
$this->middleware('auth');
}
else {
$this->middleware('guest');
}
}
public function index() {
return view('about');
}
}
?>
在这种情况下,它工作正常,所以我想知道我的解决方案是否良好,或者我是否错了。
答案 0 :(得分:1)
试试这个:
Route::group(['middleware' => 'auth'], function(){
Route::get('/about', 'AboutController@index');
Route::get('/home', 'HomeController@index');
});