【问题标题】:Laravel 4 - Dynamic Routing/ViewsLaravel 4 - 动态路由/视图
【发布时间】:2013-06-20 16:45:06
【问题描述】:

我有一个包含两个步骤的用户登录系统:

  1. 用户登录
    1. 尝试将用户绑定到 AD(这是 LDAP 身份验证模块)
    2. 如果用户可以通过 AD 登录,请检查用户是否存在于用户表中
    3. 如果用户表中不存在用户,请添加它们 - 仅“用户名”和“好名”
      1. 如果添加了用户,他们将不属于任何团队,并会收到通知联系他们的经理以继续帐户设置。
    4. 将用户列加载到 Laravel Session credentials - 所以现在我们有了 AD 登录名、“好”名(第一个最后一个)、选定的团队 ID 等。没有密码,因为用户已经过身份验证。
  2. 团队选择 - 表 userTeams 数据透视表。
  3. 将用户路由到团队仪表板

现在,我有这条路线:

// 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');
});

但是,我不觉得这是一个非常优雅的解决方案 - 主要是因为我无法通过这种方法进行反向路由。

有什么提示或建议吗?

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

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

    更新

    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'
    猜你喜欢
    • 2013-08-10
    • 2013-12-23
    • 2014-12-06
    • 1970-01-01
    • 2013-01-15
    • 2014-11-14
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    相关资源
    最近更新 更多