在Symfon欧宝娱乐app下载地址y 5.1:新更新的安全系统
警告:这篇文章是关于一个不受支持的Symfony的版本。欧宝娱乐app下载地址其中一些信息可能是过时了。阅读最近的Symfony文档欧宝娱乐app下载地址。
欧宝娱乐app下载地址Symfony将包括一个5.1新的安全系统是其最大的新特性之一。经过几个月的计划,讨论和辛勤工作,我们可以按时完成Symfony 5.1作为实验功能。欧宝娱乐app下载地址
对原有制度的主要差异:
1)删除一切但警卫
在新的安全系统中,只有一个侦听器将请求传递给一个Symfony提供的身份验证管理器。欧宝娱乐app下载地址经理负责会话管理,存储令牌,“记住我”功能,等等。
一切都是相关的一个概念和接口:身份验证器。这简化了安全组件的内部,使一切都为开发人员更容易理解。
2)搬到一个基于事件的系统
安全组件没有使用Symfony事件来扩展它的所有功能。欧宝娱乐app下载地址新系统的变化,它是基于三个事件:
CheckPassportEvent
,这是主要的事件和检查的有效性给出凭证(CSRF标记一个密码,一个证书,等等)。LoginSuccessEvent
时,派出凭证是有效的。LoginFailureEvent
时,派出凭证是错误的。
这是所有!三个简单的事件给你所有的应用程序所需的灵活性。
3)下一代警卫
保安是在Symfony 2.8中引欧宝娱乐app下载地址入的通过GuardAuthenticatorInterface
。新的安全系统允许简化一些保护功能,改善他人。首先,checkCredentials ()
方法和删除getCredentials ()
和getUser ()
方法已经合并成一个方法调用authenticate ()
。
这引入了两个新概念:
护照
,authenticate ()
方法返回一个“安全护照”,其中包含所需的用户对象和任何凭据进行身份验证;徽章
,护照所需的额外信息。
护照和徽章的听众CheckPassportEvent
,这将验证和检查护照和所有的徽章。如果所有徽章都解决,成功地验证用户的身份。
这是一个简化的例子使用时操作新系统的登录表单:
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日27 28 29
使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;使用欧宝娱乐app下载地址\组件\安全\核心\异常\UsernameNotFoundException;使用欧宝娱乐app下载地址\组件\安全\Http\身份验证\AuthenticatorInterface;使用欧宝娱乐app下载地址\组件\安全\Http\身份验证\护照\徽章\CsrfTokenBadge;使用欧宝娱乐app下载地址\组件\安全\Http\身份验证\护照\凭证\PasswordCredentials;使用欧宝娱乐app下载地址\组件\安全\Http\身份验证\护照\护照;使用欧宝娱乐app下载地址\组件\安全\Http\身份验证\护照\PassportInterface;类FormAuthenticator实现了AuthenticatorInterface{/ /……公共函数进行身份验证(请求美元请求):PassportInterface{/ /找到一个用户基于一个“电子邮件”表单字段美元用户=美元这- >userRepository- >findOneByEmail (美元请求- >get (“电子邮件”));如果(!美元用户){扔新UsernameNotFoundException ();}返回新护照(美元用户,新PasswordCredentials (美元请求- >get (“密码”),(/ /使用“csrf_token”字段和CSRF保护新CsrfTokenBadge (“loginform”,美元请求- >get (“csrf_token”)),/ /添加支持升级密码散列新PasswordUpgradeBadge (美元请求- >get (“密码”),美元这- >userRepository)]);}}
新的安全系统默认情况下是禁用的,但是你可以使它如下:
1 2 3 4
#配置/包/ security.yaml安全:#……enable_authenticator_manager:真正的
我们将修改所有Symfony医生关欧宝娱乐app下载地址于安全的文章很快开始使用这个新的安全系统。与此同时,你可以阅读下面的博客:满足新的Symfony安全欧宝娱乐app下载地址:身份验证器Wouter德容背后的主要开发人员,这一新的安全系统。这篇文章完全是基于Wouter的博客文章。
评论
https://github.com/欧宝娱乐app下载地址symfony/symfony/pull/36600
我只是添加支持新的身份验证系统在ecphp / cas-bundle !
参见:https://github.com/ecphp/cas-bundle/pull/8
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
Romaric Drigon is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now