使用路由的Laravel 5.1页身份验证


Laravel 5.1 page authentication using routes

我在一个需要管理面板的网站上工作。我目前正在尝试设置该面板的身份验证,尽管我找不到拒绝任何访客用户(非管理员)访问的方法。当然,我有一个登录页面,登录后,它会路由到管理页面,不过当你没有登录时,你也可以转到/admin。

routes.php:

Route::get('home', function(){
if (Auth::guest()) {
    return Redirect::to('/');
} else {
    return Redirect::to('admin');
}
});
Route::get('admin', function () {
    return view('pages.admin.start');
});

MainController.php

namespace App'Http'Controllers;
use App'Http'Controllers'Controller;
class MainController extends Controller {
 public function getIndex() {
    return view('pages.index');
 }
 public function getAbout() {
    return view('pages.about');
 }
 public function getPortfolio() {
    return view('pages.portfolio');
 }
 public function getShop() {
    return view('pages.shop');
 }
 public function getContact() {
    return view('pages.contact');
 }
 /*public function getAdmin() {
      return view('pages.admin.start');
 }*/
}

我真的需要一些帮助,因为我完全被卡住了,是的,我已经阅读了文档,尽管可能我只是遗漏了一些东西。

假设您有这样一行:

'auth' => 'App'Http'Middleware'Authenticate',

app/Http/Kernel.php文件中:

将所有需要"验证"的路由放在分组中,但将"访客"路由放在它们之外:

Route::get('home', function(){
if (Auth::guest()) {
    return Redirect::to('/');
} else {
    return Redirect::to('admin');
}
});

Route::group( ['middleware' => 'auth' ], function(){
    Route::get('admin', function () {
        return view('pages.admin.start');
    });
    Route::just-another-route()...;
    Route::just-another-route()...;
});

文件:http://laravel.com/docs/5.1/routing#route-组

您应该使用中间件来处理用户的身份验证

1) 首先,你必须创建一个中间件,它将检查需要页面的用户是否是管理员,如果不是,你必须重定向;像这样的东西:

class AdminMiddleware
{
    public function handle(Request $request, Closure $next )
    {
        //if User is not admin
           //redirect to no permess
        return $next($request);
    }
}

2) 然后,您必须将中间件绑定到您希望只能从管理员用户访问的路由:

//bind the middleware to all the routes inside this group
Route::group( ['middleware' => 'adminmiddleware' ], function()
{
    Route::get('admin', function () {
       return view('pages.admin.start');
    });
    //other routes   
});