0

重写了我的路由和过滤器脚本并且它起作用了,所以第一次可能犯了一个愚蠢的错误。发布了代码的缩小版本(删除了大部分路线)作为下面的答案。也接受了第一个答案,所以问题得到了回答。

从发现 laravel 的奇迹开始,但现在我被困住了。

我做了什么

  • 首先,我创建了一些路线。

    这行得通。

  • 然后我为一个溃败组创建了一个过滤器。

    当我将路由组放在我的默认路由后面时,这有点奏效。但是我可以解决这个问题,因为代码是从顶部执行的,并且当我将它放在我的默认路由之前的默认路由之前会被重写。听起来很符合逻辑。

  • 多组的。

    这是没有严重错误的地方。我首先创建了两个过滤器,因为我不知道是否可以制作负过滤器或以这种方式制作的东西。

    一个过滤器与另一个过滤器正好相反。因此,如果过滤器一中的条件为真,则过滤器二中的条件为假。这样做是希望实现一个 rout 仅在该 rout 条件满足时执行,而另一个 rout 仅在不满足时执行。这导致了一个循环,我不明白。

我想要完成的事情

我希望一组可以访问几页,但不能用于第二组,反之亦然。如果用户来自第一组,但从第二组请求页面,他将被重定向到第一组的“/”路由。

我的尝试导致了重定向疯狂的不定式循环

一个例子

假设 John Doe 向 url 发出 get 请求。他降落在'/'路线上。John 未登录(或不满足任何条件)。所以约翰属于未登录的人之一。约翰被重定向到登录页面。

John 现在可以登录和登录。现在 John 属于第二组,该组由已登录的人组成。他现在一定无法看到登录页面。因此,当第 2 组的人向第 1 组的页面(例如 /login)发出请求时,他或她必须被重定向到第 2 组的页面(例如“/”)。

$a = true;
if($a){
  Route::get('/', function(){return Redirect::to('login');});
  Route::get('login', function(){View::make();});
}else{
  Route::get('login', function(){return Redirect::to('/');});
  Route::get('/', function(){View::make();});
}

问题:我如何使用 laravel 路由来做到这一点?

4

2 回答 2

1

可能让我犯了一个愚蠢的错误,重写了代码,现在它可以工作了:

过滤器:

Route::filter('access', function() {
    if (Config::get('app.lockapp') && empty(Session::get('test_access'))) {
        return Redirect::to('getaccess');
    }
});

Route::filter('lock', function() {
    if (!Config::get('app.lockapp') || !empty(Session::get('test_access'))) {
        return Redirect::to('/');
    }
});

路线:

//test enviorment
Route::group(array('before' => 'lock'), function() {

    Route::get('/', 
        'TestController@redirect_test'
    );

    Route::get('test',
        'TestController@show_authentication'
    );

});

//application
Route::group(array('before' => 'access'), function() {

    Route::get('/', 
        'AppController@show_app'
    );

});
于 2013-09-18T13:40:45.947 回答
1

此处组 A 未授权,而 B 组已授权。所以你可以检查登录状态。例如。

Route::get('login', function()
{
    if(Auth::user()) {
        return Redirect::to('admin');
    }

    return View::make('login');
});

您可以在所有 A 组页面中使用Auth::user()来过滤用户。

于 2013-09-18T12:56:24.477 回答