Php Laravel 4-动态布线/视图

Php Laravel 4-动态布线/视图,php,laravel,laravel-4,Php,Laravel,Laravel 4,我有一个由两个步骤组成的用户登录系统: 用户登录 尝试将用户绑定到AD(这是LDAP验证模块) 如果用户可以通过AD登录,请检查用户表中是否存在该用户 如果用户表中不存在用户,请添加它们-仅添加“用户名”和“好名字” 如果添加了用户,他们将不属于任何团队,并将被通知与他们的经理联系以继续帐户设置 将用户列加载到Laravel会话凭据中——因此现在我们有了AD登录名、“nice”名称(最后一个)、所选团队ID等。。没有密码,因为用户已通过身份验证 团队选择-表userTeamspivot表 将

我有一个由两个步骤组成的用户登录系统:

  • 用户登录
  • 尝试将用户绑定到AD(这是LDAP验证模块)
  • 如果用户可以通过AD登录,请检查用户表中是否存在该用户
  • 如果用户表中不存在用户,请添加它们-仅添加“用户名”和“好名字”
  • 如果添加了用户,他们将不属于任何团队,并将被通知与他们的经理联系以继续帐户设置
  • 将用户列加载到Laravel会话
    凭据中
    ——因此现在我们有了AD登录名、“nice”名称(最后一个)、所选团队ID等。。没有密码,因为用户已通过身份验证
  • 团队选择-表
    userTeams
    pivot表
  • 将用户路由到团队仪表板
  • 现在,我有一条路线:

    // This group forces user to be logged in; auth() will check if user has selected a team and ensures the team exists.
    Route::group(array('before' => 'auth'), function() {
      // Handle team - URL will be /dashboard -- Team controller based on view_name from `teamUsers` table
    
      $teamUser = php_sapi_name() == "cli" ? null : @TeamUser::find(Session::get('credentials.team'));
      if(!empty($teamUser)) {
        $team = ucfirst(strtolower($teamUser->teams()->first()->view_name));
        Route::controller('dashboard', 'Team'.$team.'Controller');
      }
    
      // Handle index
      Route::controller('/', 'IndexController');
    });
    
    然而,我觉得这不是一个非常优雅的解决方案——主要是因为我不能用这种方法进行反向路由


    有什么提示或建议吗?

    我个人会选择在自己的筛选器中执行此逻辑,而不是路由组闭包,因为您所做的只是根据变量将用户“筛选”到不同的路由(与身份验证筛选器所做的相同)

    更新

    Route::filter('whatever', function()
    {
      $teamUser = php_sapi_name() == "cli" ? null : @TeamUser::find(Session::get('credentials.team'));
    
      if ( empty($teamUser) )
        Redirect::route('IndexController');
    });
    
    Route::group(array('before' => 'auth|whatever', function()
    {
      Route::controller('someController');
      Route::controller('/', 'IndexController');
    }));
    

    你能举个例子吗?我明白你的意思。。然而,我仍然无法从中获得反向路线。有什么想法吗?PS:Route::controller('someController')--'someController'将是动态名称,例如
    'Team.$Team.controller'