我在项目中使用Larave 5。在我的项目中,我正在使用laravel default auth,它使用此命令php artisan make:auth
。我在我的route.php中设置了中间件,如图所示
Route::group(['middleware' => 'web'], function () {
// Authentication Routes...
Route::auth();
Route::get('/', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
// Admin Roles Routes...
Route::get('admin/roles', 'AdminController@showRoles');
});
现在我的问题是,如果我的用户注销并点击浏览器后退按钮用户登录,用户可以访问,如注销后添加,编辑,删除视图。那我怎么能处理这种情况呢。请帮助我想一些我错过的代码。
答案 0 :(得分:2)
首先,您的Route :: auth()已经具有登录和注销功能,如果您在终端中运行'php artisan route:list',您可以看到哪些路线可用等。
其次,您可以为管理员创建如下所示的组:
Route::group(['middleware' => 'web'], function () {
// Authentication Routes...
Route::auth();
// Admin Roles Routes...
Route::group(['prefix'=>'admin', 'middleware'=>'auth'], function() {
Route::get('roles', 'AdminController@showRoles');
});
});
我希望这适合你;)
顺便说一下,Laravel文档会告诉你很多......所以一定要先看一下;)
答案 1 :(得分:1)
首先,您不需要应用已web
已应用于路线的RouteServiceProvider
中间件,请参阅https://laravel.com/docs/5.2/middleware#registering-middleware
其次,当使用Route:auth()
时,它是:
$this->get('login', 'Auth\AuthController@showLoginForm');
$this->post('login', 'Auth\AuthController@login');
$this->get('logout', 'Auth\AuthController@logout');
$this->get('register', 'Auth\AuthController@showRegistrationForm');
$this->post('register', 'Auth\AuthController@register');
$this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');
$this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
$this->post('password/reset', 'Auth\PasswordController@reset');
所以你不需要定义这些路线:
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
最后,为什么要将登录信息放在主页上?
Route::get('/', 'Auth\AuthController@getLogin');
这个例子应该可行:
Route::group(['middleware' => 'auth'], function () {
Route::get('/', function () {
return 'Hello! You are logged in.';
});
// Admin Roles Routes...
Route::get('admin/roles', 'AdminController@showRoles');
});
Route::auth();
如果未经身份验证的用户尝试访问您的主页http://yoursite.com
和http://yoursite.com/admin/roles
,上述路由会将用户重定向到http://yoursite.com/login
,因为这些页面受auth
中间件保护
答案 2 :(得分:0)
@Rick回答的补充。
您也可以在控制器的__construct()函数中手动设置中间件。
示例:
// SomeController.php
public function __construct()
{
$this->middleware('auth');
}