【发布时间】:2011-10-13 15:13:38
【问题描述】:
我在 symfony 1.4 中使用 sfGuardPlugin,我想知道如何摆脱它的“默认”路由。我的意思是“守卫/用户”、“守卫/权限”和“守卫/组”路由。
确实,我已经设计了自己的后端,没有管理生成器,并且我已经使用自定义 url 重新创建了这三个页面。那么如何禁用对默认 sfGuard 页面的访问呢?
【问题讨论】:
标签: symfony1 symfony-1.4 sfguard
我在 symfony 1.4 中使用 sfGuardPlugin,我想知道如何摆脱它的“默认”路由。我的意思是“守卫/用户”、“守卫/权限”和“守卫/组”路由。
确实,我已经设计了自己的后端,没有管理生成器,并且我已经使用自定义 url 重新创建了这三个页面。那么如何禁用对默认 sfGuard 页面的访问呢?
【问题讨论】:
标签: symfony1 symfony-1.4 sfguard
【讨论】:
backend_dev.php/guard/users URL(以及其他 URL)。有什么想法吗?
/:module/:action 路由。
backend_dev.php/sfGuardUsers 是禁用。
你应该更新文件
/config/sfDoctrineGuardPluginConfiguration.class.php
到最新版本。
在上次更新之前,尽管有文档,但路由确实已注册。
您似乎使用的是该文件的旧版本。
【讨论】:
要停用这 3 个模块:您只需从后端应用程序的 settings.yml 中删除 sfGuardGroup、sfGuardUser、sfGuardPermission。
all:
.settings:
enabled_modules: [default, sfGuardAuth, sfGuardGroup, sfGuardUser, sfGuardPermission]
为了只保留认证模块
all:
.settings:
enabled_modules: [default, sfGuardAuth]
但是我不知道默认是什么。
【讨论】:
如果你 (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')));
}
}
【讨论】: