我使用的是laravel 5.1,用户登录后,login
和register
的url仍然可以被用户访问。
我目前实现的路由如下:
<?php
$s = 'public.';
Route::get('/', ['as' => $s . 'home', 'uses' => 'PagesController@getHome']);
$a = 'auth.';
Route::get('/login', [ 'as' => $a . 'login', 'uses' => 'Auth'AuthController@getLogin']);
Route::post('/login', ['as' => $a . 'login-post', 'uses' => 'Auth'AuthController@postLogin']);
Route::get('/register', ['as' => $a . 'register', 'uses' => 'Auth'AuthController@getRegister']);
Route::post('/register', ['as' => $a . 'register-post', 'uses' => 'Auth'AuthController@postRegister']);
Route::get('/password', ['as' => $a . 'password', 'uses' => 'Auth'PasswordResetController@getPasswordReset']);
Route::post('/password', ['as' => $a . 'password-post', 'uses' => 'Auth'PasswordResetController@postPasswordReset']);
Route::get('/password/{token}', ['as' => $a . 'reset', 'uses' => 'Auth'PasswordResetController@getPasswordResetForm']);
Route::post('/password/{token}',['as' => $a . 'reset-post', 'uses' => 'Auth'PasswordResetController@postPasswordResetForm']);
$s = 'social.';
Route::get('/social/redirect/{provider}', ['as' => $s . 'redirect', 'uses' => 'Auth'AuthController@getSocialRedirect']);
Route::get('/social/handle/{provider}', ['as' => $s . 'handle', 'uses' => 'Auth'AuthController@getSocialHandle']);
Route::group(['prefix' => 'admin', 'middleware' => 'auth:administrator'], function()
{
$a = 'admin.';
Route::get('/', ['as' => $a . 'home', 'uses' => 'AdminController@getHome']);
});
Route::group(['prefix' => 'user', 'middleware' => 'auth:user'], function()
{
$a = 'user.';
Route::get('/', ['as' => $a . 'home', 'uses' => 'UserController@getHome']);
});
Route::group(['middleware' => 'auth:all'], function()
{
$a = 'authenticated.';
Route::get('/logout', ['as' => $a . 'logout', 'uses' => 'Auth'AuthController@getLogout']);
});
我尝试了以下方法,但没有成功:
Route::get('/login', ['before'=> 'auth', 'as' => $a . 'login', 'uses' => 'Auth'AuthController@getLogin']);
谢谢! !
您需要为登录实现一个帮助器(中间件)来执行重定向。查看app/Http/Middleware/RedirectIfAuthenticated.php,这是一个很好的例子。不需要为此创建路由。