Symfony FosUserBundle控制器覆盖
[设置]Symfony FosUserBundle控制器覆盖,symfony,controller,fosuserbundle,Symfony,Controller,Fosuserbundle,[设置] Symfony 3.4 FosUserBundle 2.0 限制:() [问题] 阅读Symfony文档时,关于, 我遇到了这样的情况: 如果控制器是服务,请参阅下一节中关于如何覆盖它的内容。否则,请使用与要覆盖的控制器关联的相同路径定义一个新的route+控制器(并确保在捆绑之前加载新路由) 看到医生在一些最重要的部分仍然像以前一样不完整,不知何故,我感到欣喜若狂。。。对,这部分没有代码示例,甚至不能确定要做什么 有人能给我举个例子说明如何覆盖FosUserBundle吗?像登录
- Symfony 3.4
- FosUserBundle 2.0
- 限制:()
我遇到了这样的情况: 如果控制器是服务,请参阅下一节中关于如何覆盖它的内容。否则,请使用与要覆盖的控制器关联的相同路径定义一个新的route+控制器(并确保在捆绑之前加载新路由) 看到医生在一些最重要的部分仍然像以前一样不完整,不知何故,我感到欣喜若狂。。。对,这部分没有代码示例,甚至不能确定要做什么 有人能给我举个例子说明如何覆盖FosUserBundle吗?像登录部分这样的一个部分就足够了。同样的逻辑也适用于其他章节 另外,作为附带问题:
- 是否值得使用FosUserBundle
- 有比FosUserBundle更容易使用的捆绑包吗
- 让我自己的逻辑来处理登录不是更有价值、更快吗
- 我的理解是:只需创建控制器,然后在配置中为其添加一条与要覆盖的路径相同的路由,确保之前已加载
例如,要覆盖登录操作,请执行以下操作:
// AppBundle\Controller\UserController.php
/**
* @route("/login", name="login_override")
* @param Request $request
* @return Response
*/
public function loginAction(Request $request)
{
/** @var $session Session */
$session = $request->getSession();
$authErrorKey = Security::AUTHENTICATION_ERROR;
$lastUsernameKey = Security::LAST_USERNAME;
// get the error if any (works with forward and redirect -- see below)
if ($request->attributes->has($authErrorKey)) {
$error = $request->attributes->get($authErrorKey);
} elseif (null !== $session && $session->has($authErrorKey)) {
$error = $session->get($authErrorKey);
$session->remove($authErrorKey);
} else {
$error = null;
}
if (!$error instanceof AuthenticationException) {
$error = null; // The value does not come from the security component.
}
// last username entered by the user
$lastUsername = (null === $session) ? '' : $session->get($lastUsernameKey);
$tokenManager = $this->container->get('security.csrf.token_manager');
$csrfToken = $tokenManager
? $tokenManager->getToken('authenticate')->getValue()
: null;
return $this->render('@FOSUser/Security/login.html.twig', array(
'last_username' => $lastUsername,
'error' => $error,
'csrf_token' => $csrfToken,
));
}
一方面,FOSUserBundle是目前使用最广泛的第三方包。很难想象成千上万的开发者会错。另一方面,如何定制它是这个板块上最常见的问题之一。几乎每个人都想定制它。在我公认的少数派观点中,这一捆绑要比它的价值麻烦得多。SecurityBundle拥有99%的所需功能。添加一个注册操作,你就可以开始了。用户提供者(以及用户)是你可能需要的一部分。从安全文档的开头开始,浏览它们,看看它们是如何结合在一起的,这是非常值得的。始终记住,我对用户管理的看法并不完全是主流。@Cerad-那么,你是说我应该?似乎更简单。我不熟悉Symfony SecurityBundle,我所知道的最多是FosUserBundle扩展了它。我将等待更多的答复,但我仍然认为我会按照你的建议去做,从一开始就为自己的安全做准备。谢谢(抱歉重新发布,5分钟的限制太短了…)
#app\config\routing.yml
app:
resource: '@AppBundle/Controller/'
type: annotation
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"