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