Laravel 5.2 - 中间件身份验证

时间:2016-10-17 12:01:42

标签: laravel laravel-5.2 middleware

我刚刚安装了laravel 5.2,我创建了auth注册,登录和重置密码,但现在我想创建一个所有用户(也没有记录)可以访问的项目索引。我试图创造

路线::得到( '/',HomeController的@家');

但是此视图仅对记录的用户启用。

我的路线

Route::auth();
Route::get('/home', 'HomeController@index');
// POST - FORM CREA 
Route::get('/crea-regalo', 'PostController@form');
Route::post('/crea-regalo', 'PostController@creaPost');
// LISTA ANNUNCI PRINCIPALE
Route::get('/', 'HomeController@home');

我的家庭控制器

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $posts = Post::orderBy('id','DESC');
        return view('home', compact('posts'));
    }

    public function home()
    {
        $posts = Post::all();
        return view('index', compact('posts'));
    }
}

如何创建所有用户都可以访问的视图路径?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以编写单独的控制器来访问所有页面,因为您在构造函数中编写了auth中间件

public function __construct()
{
   $this->middleware('auth');
}

类似于

class GuestController extends Controller
{

    public function __construct()
    {

    }


    public function home()
    {
        $posts = Post::all();
        return view('index', compact('posts'));
    }
}

路线

Route::get('/home', 'GuestController@home');

或者你可以这样做

$this->middleware('auth', ['except' => ['home']]);

这将能够访问所有人的主页。在你的构造函数中添加这个

public function __construct()
{
   $this->middleware('auth', ['except' => ['home']]);
}

答案 1 :(得分:2)

将您想要仅允许经过身份验证的用户的路由放在中间件身份验证中,如下所示:

Route::group(['middleware' => ['auth']], function () {
  //your routes    
})

对于那些所有用户都可以访问的路由,将其放在上面的组中。