使用路由进行Laravel 5.1页面身份验证

时间:2015-12-14 12:37:06

标签: php laravel authentication laravel-5

我正在开发一个需要管理面板的网站。我目前正在尝试设置该面板的身份验证,但我找不到拒绝任何访客用户(非管理员)访问的方法。当然,我有一个登录页面,登录后,它会路由到管理页面,但是当你没有登录时你也可以去/ 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');
 }*/
}

我真的可以在这里使用一些帮助,因为我完全陷入困境,是的,我已经阅读了文档,但也许我只是遗漏了一些东西。

2 个答案:

答案 0 :(得分:1)

您应该使用Middleware来处理用户身份验证

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   
});

答案 1 :(得分:1)

假设您有这样的一行:

'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-groups