新在Symfo欧宝娱乐app下载地址ny 2.6:安全组件的改进
警告:这篇文章是关于一个不受支持的Symfony的版本。欧宝娱乐app下载地址其中一些信息可能是过时了。阅读最近的Symfony文档欧宝娱乐app下载地址。
弃用的安全。上下文服务
这是其中的一个2.6重大变化引入的Symfony欧宝娱乐app下载地址。幸运的是,它不会影响您的应用程序,因为它保持向后兼容性。在任何情况下,准备未来Symfony的版本中,你应该开始学习处理安全的欧宝娱乐app下载地址新方法。
的原因这种变化是,当你注入SecurityContext
在其他服务,特别是那些教义有关,你可以介绍一个循环引用,最终在一个例外。
一些社区讨论后决定欧宝下载链接SecurityContext
给了太多的依赖关系来检索一个简单的令牌/ User对象。这就是为什么在Symfony 2.6开始,欧宝娱乐app下载地址security.context
服务已经弃用,分裂成两个新的服务:security.authorization_checker
和security.token_storage
。
由于这是一个100%的向后兼容的改变,你不需要更新应用程序的代码。然而,如果你想这样做,变化是细微的:
1 2 3 4 5 6 7 8 9
/ /欧宝娱乐app下载地址 Symfony 2.5美元用户=美元这- >get (“security.context”)- >getToken ()- >getUser ();/ /欧宝娱乐app下载地址 Symfony 2.6美元用户=美元这- >get (“security.token_storage”)- >getToken ()- >getUser ();/ /欧宝娱乐app下载地址 Symfony 2.5如果(假= = =美元这- >get (“security.context”)- >isGranted (“ROLE_ADMIN”)){…}/ /欧宝娱乐app下载地址 Symfony 2.6如果(假= = =美元这- >get (“security.authorization_checker”)- >isGranted (“ROLE_ADMIN”)){…}
还有一个额外的好处的改变,相关的常量安全现在更短和更容易记住:
1 2 3 4 5 6 7
/ /欧宝娱乐app下载地址 Symfony 2.5使用欧宝娱乐app下载地址\组件\安全\核心\SecurityContextInterface;如果(美元安全- >(SecurityContextInterface::AUTHENTICATION_ERROR)) {…}/ /欧宝娱乐app下载地址 Symfony 2.6使用欧宝娱乐app下载地址\组件\安全\核心\安全;如果(美元安全- >(安全::AUTHENTICATION_ERROR)) {…}
最后,这一改变也不赞成app.security
全局变量的树枝模板。你应该使用相反app.user
全局变量和is_granted ()
函数。
新服务来简化密码编码
提供的
阿里尔Ferrandini
在# 11306。
由于# 11299 DX提案Sy欧宝娱乐app下载地址mfony 2.6将引入一个新的security.password_encoder
服务来简化密码编码:
1 2 3 4 5 6 7 8 9 10
/ /欧宝娱乐app下载地址 Symfony 2.5美元用户=新Acme \ UserBundle \ \用户实体();美元工厂=美元这- >容器- >get (“security.encoder_factory”);美元编码器=美元工厂- >getEncoder (美元用户);美元密码=美元编码器- >encodePassword (美元plainTextPassword,美元用户- >getSalt ());/ /欧宝娱乐app下载地址 Symfony 2.6美元用户=新Acme \ UserBundle \ \用户实体();美元编码器=美元这- >容器- >get (“security.password_encoder”);美元密码=美元编码器- >encodePassword (美元用户,美元plainTextPassword);
基于REMOTE_USER的侦听器添加到安全防火墙
提供的
马克西姆Douailin
在# 10698。
几个Apache安全模块(auth_kerb
,auth_cas
等)提供的用户名
通过一个环境变量REMOTE_USER
。出于这个原因,Symfony 2.欧宝娱乐app下载地址6将包括一个新的认证侦听器基于这个变量。
要在应用程序中使用它,只需定义一个防火墙的新remote_user
输入您的安全配置:
1 2 3 4 5 6 7
# app / config / security.yml安全:防火墙:secured_area:模式:^ /remote_user:供应商:your_user_provider
增加了一个辅助安全错误
提供的
鲍里斯Vujičić
在# 11324。
定制在Symfony应用程序登录欧宝娱乐app下载地址表单很简单,但太详细:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25日26日
/ /欧宝娱乐app下载地址 Symfony 2.5公共函数loginAction(请求美元请求){美元会话=美元请求- >getSession ();如果(美元请求- >属性- >(SecurityContextInterface::AUTHENTICATION_ERROR)) {美元错误=美元请求- >属性- >get (SecurityContextInterface::AUTHENTICATION_ERROR);}elseif(零= = !美元会话& &美元会话- >(SecurityContextInterface::AUTHENTICATION_ERROR)) {美元错误=美元会话- >get (SecurityContextInterface::AUTHENTICATION_ERROR);美元会话- >remove (SecurityContextInterface::AUTHENTICATION_ERROR);}其他的{美元错误=”;}美元lastUsername= (零= = =美元会话)?”:美元会话- >get (SecurityContextInterface::LAST_USERNAME);返回美元这- >呈现(“AcmeSecurityBundle:安全:login.html.twig”,数组(“last_username”= >美元lastUsername,“错误”= >美元错误));}
由于# 11147 DX提案欧宝娱乐app下载地址Symfony 2.6将包括一个新的辅助大大减少代码用于登录表单动作:
1 2 3 4 5 6 7 8 9 10
/ /欧宝娱乐app下载地址 Symfony 2.6公共函数loginAction(){美元助手=美元这- >get (“security.authentication_utils”);返回美元这- >呈现(“AcmeSecurityBundle:安全:login.html.twig”,数组(“last_username”= >美元助手- >getLastUsername (),“错误”= >美元助手- >getLastAuthenticationError ()));}
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
http://欧宝娱乐app下载地址www.oldmanjams.com/blog/new-in-symfony-2-6-new-shortcut-methods-for-controllers
Grégoire Pineau is a certified Symfony engineer and a certified Twig designer.
Get certified! Online exams available in all countries.
Register Now