我有问题使用下面的代码来构建一个登录系统,它无法打开页面,因为重定向太多,我试图使文件夹路径像左
admin/login
admin/
到AdminArticleController.php crud
admin
下的任何路径都应该被检测登录或不登录,如何解决?
route.php
Route::group(array('prefix' => 'admin', 'before' => 'loginsession'), function()
{
Route::get('/', function()
{
print 'article';
});
Route::get('/login', 'AdminDashboardController@getLogin');
Route::post('/login', function()
{
});
Route::post('/logout', function()
{
});
});
Route::filter('loginsession', function()
{
if(!Session::has('loggedin'))
{
return Redirect::to('admin/login');
}
});
UPDATE
访问admin/
包含admin/login
或admin/article/..
Route::resource('admin/article','AdminArticleController');
答案 0 :(得分:1)
您正在创建重定向循环,因为login
路由位于要求您登录的过滤器内。如果您未登录,Laravel将会:
admin/login
。loginsession
过滤器,然后尝试再次重定向 。将login
路线移到包含过滤器loginsession
的组之外。
这一行:
Route::get('/login', 'AdminDashboardController@getLogin');
答案 1 :(得分:1)
Route::group(array('prefix' => 'admin', 'before' => 'loginsession'), function()
{
Route::get('/', function()
{
print 'article';
});
Route::get('/login', 'AdminDashboardController@getLogin');
Route::post('/login', function()
{
});
Route::post('/logout', function()
{
});
});
认为....过滤器将被应用。但是如果执行了admin/login
,他就无法登录,因为过滤器会重定向到同一个动作。
将login
放出群组。喜欢:
Route::get('/login', 'AdminDashboardController@getLogin');
Route::group(array('prefix' => 'admin', 'before' => 'loginsession'), function()
{
Route::get('/', function()
{
print 'article';
});
Route::post('/login', function()
{
});
Route::post('/logout', function()
{
});
});
根据您的更新,过滤器不会在Resoruce路线中应用。
最简单的方法是
Route::when('admin/*', 'loginsession');
将它放在路径文件中的任何位置并完成。