【问题标题】:Symfony sfGuardPlugin: disable default routesSymfony sfGuardPlugin:禁用默认路由
【发布时间】:2011-10-13 15:13:38
【问题描述】:

我在 symfony 1.4 中使用 sfGuardPlugin,我想知道如何摆脱它的“默认”路由。我的意思是“守卫/用户”、“守卫/权限”和“守卫/组”路由。

确实,我已经设计了自己的后端,没有管理生成器,并且我已经使用自定义 url 重新创建了这三个页面。那么如何禁用对默认 sfGuard 页面的访问呢?

【问题讨论】:

    标签: symfony1 symfony-1.4 sfguard


    【解决方案1】:

    app.yml:

    all:
      sf_guard_plugin:
        routes_register: false
    

    documentation 中所述。

    【讨论】:

    • 感谢 Maerlyn 的回答,我试过了,但即使清除了缓存,我也可以访问 backend_dev.php/guard/users URL(以及其他 URL)。有什么想法吗?
    • 是的,从你的 routing.yml 文件中删除默认的 /:module/:action 路由。
    • 我已经做过 :( 在我的 rooting.yml 中可用的唯一路由(用于测试)是 sf_guard_signin、sf_guard_signout 和 sf_guard_password(如文档中所述)。另一方面,backend_dev.php/sfGuardUsers 是禁用。
    【解决方案2】:

    你应该更新文件

    /config/sfDoctrineGuardPluginConfiguration.class.php

    到最新版本。

    在上次更新之前,尽管有文档,但路由确实已注册。

    您似乎使用的是该文件的旧版本。

    【讨论】:

    • 感谢您的回复,实际上它是最新的,但您为我指明了正确的方向。请参阅 Mikolaj 的回答。
    • 刚遇到这个问题。 See here了解更多信息
    【解决方案3】:

    要停用这 3 个模块:您只需从后端应用程序的 settings.yml 中删除 sfGuardGroup、sfGuardUser、sfGuardPermission。

    all:
      .settings:
        enabled_modules: [default, sfGuardAuth, sfGuardGroup, sfGuardUser, sfGuardPermission]
    

    为了只保留认证模块

    all:
      .settings:
        enabled_modules: [default, sfGuardAuth]
    

    但是我不知道默认是什么。

    【讨论】:

    • 默认模块是原始的 Symfony 模块。例如默认的 404 错误页面,以及棕色的“symfony project created”欢迎页面。它位于 lib/vendor/symfony 目录中的某个位置
    【解决方案4】:

    如果你 (i) 仍然想使用插件提供的模块,(ii) 使用你自己的路由,(iii) 阻止人们使用默认的 sfGuard 路由,并且 (iv) 仍然有默认的 /:module/ :action 路由(相当有用),你可以重写 sfGuardRouting 类,这里是

    plugins/sfGuardPlugin/lib/routing/sfGuardRouting.class.php

    你可以简单地将这个文件复制到你的

    lib/

    目录然后玩弄方法。例如,我刚刚为 sfGuardPlugin 的模块注释了类的所有方法的所有代码(因为我在我的 apps/myApp/config/routing.yml 文件中创建了自己的路由),就像这样

    class sfGuardRouting
    {
      static public function listenToRoutingLoadConfigurationEvent(sfEvent $event)
      {
       //    $r = $event->getSubject();
       // preprend our routes
       //    $r->prependRoute('sf_guard_signin', new sfRoute('/guard/login', array('module' => 'sfGuardAuth', 'action' => 'signin'))); 
       //    $r->prependRoute('sf_guard_signout', new sfRoute('/guard/logout', array('module' => 'sfGuardAuth', 'action' => 'signout'))); 
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 2011-10-05
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多